Skip to content

Commit

Permalink
Merge bitcoin#28862: lint: Report all lint errors instead of early exit
Browse files Browse the repository at this point in the history
fa01f88 ci: Add missing COPY for ./test/lint/test_runner (MarcoFalke)
faff3e3 lint: Report all lint errors instead of early exit (MarcoFalke)

Pull request description:

  `all-lint.py` currently collects all failures. However, the `06_script.sh` does not, since July this year (bitcoin#28103 (comment)).

  Fix this by printing all failures before exiting.

  Can be tested by modifying (for example) two subtrees in the same commit and then running the linters.

ACKs for top commit:
  kevkevinpal:
    ACK [fa01f88](bitcoin@fa01f88)
  TheCharlatan:
    lgtm ACK fa01f88

Tree-SHA512: c0f3110f2907d87e29c755e3b77a67dfae1f8a25833fe6ef8f2f2c58cfecf1aa46f1a20881576b62252b04930140a9e416c78b4edba0780d3c4fa7aaebabba81
  • Loading branch information
fanquake committed Nov 22, 2023
2 parents a238356 + fa01f88 commit 172cd92
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 12 deletions.
9 changes: 0 additions & 9 deletions ci/lint/06_script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
1 change: 1 addition & 0 deletions ci/lint_imagefile
Original file line number Diff line number Diff line change
Expand Up @@ -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 && \
Expand Down
61 changes: 58 additions & 3 deletions test/lint/test_runner/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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",
Expand All @@ -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());

Expand Down

0 comments on commit 172cd92

Please sign in to comment.