diff --git a/ci/lint/06_script.sh b/ci/lint/06_script.sh index af7a517930443..318b2bb81942f 100755 --- a/ci/lint/06_script.sh +++ b/ci/lint/06_script.sh @@ -23,16 +23,7 @@ else fi export COMMIT_RANGE -# This only checks that the trees are pure subtrees, it is not doing a full -# check with -r to not have to fetch all the remotes. -test/lint/git-subtree-check.sh src/crypto/ctaes -test/lint/git-subtree-check.sh src/secp256k1 -test/lint/git-subtree-check.sh src/minisketch -test/lint/git-subtree-check.sh src/leveldb -test/lint/git-subtree-check.sh src/crc32c RUST_BACKTRACE=1 "${LINT_RUNNER_PATH}/test_runner" -test/lint/check-doc.py -test/lint/all-lint.py if [ "$CIRRUS_REPO_FULL_NAME" = "bitcoin/bitcoin" ] && [ "$CIRRUS_PR" = "" ] ; then # Sanity check only the last few commits to get notified of missing sigs, diff --git a/ci/lint_imagefile b/ci/lint_imagefile index 4136a9bfded2b..d32b35b19d0a7 100644 --- a/ci/lint_imagefile +++ b/ci/lint_imagefile @@ -12,6 +12,7 @@ ENV LC_ALL=C.UTF-8 COPY ./.python-version /.python-version COPY ./ci/lint/container-entrypoint.sh /entrypoint.sh COPY ./ci/lint/04_install.sh /install.sh +COPY ./test/lint/test_runner /test/lint/test_runner RUN /install.sh && \ echo 'alias lint="./ci/lint/06_script.sh"' >> ~/.bashrc && \ diff --git a/src/hash.cpp b/src/hash.cpp index 1ece8c5a7922d..ee6e80095b7ae 100644 --- a/src/hash.cpp +++ b/src/hash.cpp @@ -75,7 +75,7 @@ unsigned int MurmurHash3(unsigned int nHashSeed, Span vData void BIP32Hash(const ChainCode &chainCode, unsigned int nChild, unsigned char header, const unsigned char data[32], unsigned char output[64]) { unsigned char num[4]; - WriteBE32(num, nChild); + WriteBE32(num, nChild); CHMAC_SHA512(chainCode.begin(), chainCode.size()).Write(&header, 1).Write(data, 32).Write(num, 4).Finalize(output); } diff --git a/src/outputtype.cpp b/src/outputtype.cpp index 566e5ec55acf4..e14ad9f9074c6 100644 --- a/src/outputtype.cpp +++ b/src/outputtype.cpp @@ -51,7 +51,7 @@ CTxDestination GetDestinationForKey(const CPubKey& key, OutputType type) { switch (type) { case OutputType::LEGACY: return PKHash(key); - case OutputType::P2SH_SEGWIT: + case OutputType::P2SH_SEGWIT: case OutputType::BECH32: { if (!key.IsCompressed()) return PKHash(key); CTxDestination witdest = WitnessV0KeyHash(key); @@ -102,6 +102,7 @@ CTxDestination AddAndGetDestinationForScript(FillableSigningProvider& keystore, } } case OutputType::BECH32M: + case OutputType::UNKNOWN: {} // This function should not be used for BECH32M or UNKNOWN, so let it assert } // no default case, so the compiler can warn about missing cases assert(false); diff --git a/src/validation.cpp b/src/validation.cpp index 34103d18bc1b5..84c3d0275424c 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -192,7 +192,7 @@ std::optional> CalculatePrevHeights( } // namespace std::optional CalculateLockPointsAtTip( - CBlockIndex* tip, + CBlockIndex* tip, const CCoinsView& coins_view, const CTransaction& tx) { @@ -202,7 +202,7 @@ std::optional CalculateLockPointsAtTip( if (!prev_heights.has_value()) return std::nullopt; CBlockIndex next_tip; - next_tip.pprev = tip; + next_tip.pprev = tip; // When SequenceLocks() is called within ConnectBlock(), the height // of the block *being* evaluated is what is used. // Thus if we want to know if a transaction can be part of the diff --git a/test/lint/test_runner/src/main.rs b/test/lint/test_runner/src/main.rs index b7ec9ee3b2132..ce94c3b628789 100644 --- a/test/lint/test_runner/src/main.rs +++ b/test/lint/test_runner/src/main.rs @@ -7,7 +7,9 @@ use std::path::PathBuf; use std::process::Command; use std::process::ExitCode; -use String as LintError; +type LintError = String; +type LintResult = Result<(), LintError>; +type LintFn = fn() -> LintResult; /// Return the git command fn git() -> Command { @@ -31,7 +33,31 @@ fn get_git_root() -> String { check_output(git().args(["rev-parse", "--show-toplevel"])).unwrap() } -fn lint_std_filesystem() -> Result<(), LintError> { +fn lint_subtree() -> LintResult { + // This only checks that the trees are pure subtrees, it is not doing a full + // check with -r to not have to fetch all the remotes. + let mut good = true; + for subtree in [ + "src/crypto/ctaes", + "src/secp256k1", + "src/minisketch", + "src/leveldb", + "src/crc32c", + ] { + good &= Command::new("test/lint/git-subtree-check.sh") + .arg(subtree) + .status() + .expect("command_error") + .success(); + } + if good { + Ok(()) + } else { + Err("".to_string()) + } +} + +fn lint_std_filesystem() -> LintResult { let found = git() .args([ "grep", @@ -55,8 +81,37 @@ fs:: namespace, which has unsafe filesystem functions marked as deleted. } } +fn lint_doc() -> LintResult { + if Command::new("test/lint/check-doc.py") + .status() + .expect("command error") + .success() + { + Ok(()) + } else { + Err("".to_string()) + } +} + +fn lint_all() -> LintResult { + if Command::new("test/lint/all-lint.py") + .status() + .expect("command error") + .success() + { + Ok(()) + } else { + Err("".to_string()) + } +} + fn main() -> ExitCode { - let test_list = [("std::filesystem check", lint_std_filesystem)]; + let test_list: Vec<(&str, LintFn)> = vec![ + ("subtree check", lint_subtree), + ("std::filesystem check", lint_std_filesystem), + ("-help=1 documentation check", lint_doc), + ("all-lint.py script", lint_all), + ]; let git_root = PathBuf::from(get_git_root());