0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-02 09:46:52 -05:00

Merge bitcoin/bitcoin#28862: lint: Report all lint errors instead of early exit

fa01f884d3 ci: Add missing COPY for ./test/lint/test_runner (MarcoFalke)
faff3e3b46 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 (https://github.com/bitcoin/bitcoin/pull/28103#discussion_r1268115806).

  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](fa01f884d3)
  TheCharlatan:
    lgtm ACK fa01f884d3

Tree-SHA512: c0f3110f2907d87e29c755e3b77a67dfae1f8a25833fe6ef8f2f2c58cfecf1aa46f1a20881576b62252b04930140a9e416c78b4edba0780d3c4fa7aaebabba81
This commit is contained in:
fanquake 2023-11-22 16:53:51 +00:00
commit 172cd92620
No known key found for this signature in database
GPG key ID: 2EEB9F5CC09526C1
3 changed files with 59 additions and 12 deletions

View file

@ -23,16 +23,7 @@ else
fi fi
export COMMIT_RANGE 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" 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 if [ "$CIRRUS_REPO_FULL_NAME" = "bitcoin/bitcoin" ] && [ "$CIRRUS_PR" = "" ] ; then
# Sanity check only the last few commits to get notified of missing sigs, # Sanity check only the last few commits to get notified of missing sigs,

View file

@ -12,6 +12,7 @@ ENV LC_ALL=C.UTF-8
COPY ./.python-version /.python-version COPY ./.python-version /.python-version
COPY ./ci/lint/container-entrypoint.sh /entrypoint.sh COPY ./ci/lint/container-entrypoint.sh /entrypoint.sh
COPY ./ci/lint/04_install.sh /install.sh COPY ./ci/lint/04_install.sh /install.sh
COPY ./test/lint/test_runner /test/lint/test_runner
RUN /install.sh && \ RUN /install.sh && \
echo 'alias lint="./ci/lint/06_script.sh"' >> ~/.bashrc && \ echo 'alias lint="./ci/lint/06_script.sh"' >> ~/.bashrc && \

View file

@ -7,7 +7,9 @@ use std::path::PathBuf;
use std::process::Command; use std::process::Command;
use std::process::ExitCode; use std::process::ExitCode;
use String as LintError; type LintError = String;
type LintResult = Result<(), LintError>;
type LintFn = fn() -> LintResult;
/// Return the git command /// Return the git command
fn git() -> Command { fn git() -> Command {
@ -31,7 +33,31 @@ fn get_git_root() -> String {
check_output(git().args(["rev-parse", "--show-toplevel"])).unwrap() 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() let found = git()
.args([ .args([
"grep", "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 { 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()); let git_root = PathBuf::from(get_git_root());