diff --git a/ci/lint/06_script.sh b/ci/lint/06_script.sh index 2824356506b..7e27197024e 100755 --- a/ci/lint/06_script.sh +++ b/ci/lint/06_script.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright (c) 2018-2022 The Bitcoin Core developers +# Copyright (c) 2018-present The Bitcoin Core developers # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -9,22 +9,13 @@ export LC_ALL=C set -ex if [ -n "$CIRRUS_PR" ]; then - COMMIT_RANGE="HEAD~..HEAD" + export COMMIT_RANGE="HEAD~..HEAD" if [ "$(git rev-list -1 HEAD)" != "$(git rev-list -1 --merges HEAD)" ]; then echo "Error: The top commit must be a merge commit, usually the remote 'pull/${PR_NUMBER}/merge' branch." false fi -else - # Otherwise, assume that a merge commit exists. This merge commit is assumed - # to be the base, after which linting will be done. If the merge commit is - # HEAD, the range will be empty. - COMMIT_RANGE="$( git rev-list --max-count=1 --merges HEAD )..HEAD" fi -export COMMIT_RANGE -echo -git log --no-merges --oneline "$COMMIT_RANGE" -echo RUST_BACKTRACE=1 "${LINT_RUNNER_PATH}/test_runner" if [ "$CIRRUS_REPO_FULL_NAME" = "bitcoin/bitcoin" ] && [ "$CIRRUS_PR" = "" ] ; then diff --git a/test/lint/test_runner/src/main.rs b/test/lint/test_runner/src/main.rs index 36f82f14b1a..dacdff8a828 100644 --- a/test/lint/test_runner/src/main.rs +++ b/test/lint/test_runner/src/main.rs @@ -180,7 +180,17 @@ fn get_git_root() -> PathBuf { /// Return the commit range, or panic fn commit_range() -> String { - env::var("COMMIT_RANGE").unwrap() + // Use the env var, if set. E.g. COMMIT_RANGE='HEAD~n..HEAD' for the last 'n' commits. + env::var("COMMIT_RANGE").unwrap_or_else(|_| { + // Otherwise, assume that a merge commit exists. This merge commit is assumed + // to be the base, after which linting will be done. If the merge commit is + // HEAD, the range will be empty. + format!( + "{}..HEAD", + check_output(git().args(["rev-list", "--max-count=1", "--merges", "HEAD"])) + .expect("check_output failed") + ) + }) } /// Return all subtree paths @@ -673,6 +683,10 @@ fn main() -> ExitCode { }; let git_root = get_git_root(); + let commit_range = commit_range(); + let commit_log = check_output(git().args(["log", "--no-merges", "--oneline", &commit_range])) + .expect("check_output failed"); + println!("Checking commit range ({commit_range}):\n{commit_log}\n"); let mut test_failed = false; for linter in linters_to_run {