From fadb06c361bbda78192d89fd06195f0aa5418c56 Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Tue, 16 Jan 2024 10:53:48 +0100 Subject: [PATCH 1/2] doc: move-only lint docs to one place Can be reviewed with --color-moved=dimmed-zebra --- test/README.md | 30 +----------------------------- test/lint/README.md | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/test/README.md b/test/README.md index fee8828d343..0d1e06c0ade 100644 --- a/test/README.md +++ b/test/README.md @@ -326,35 +326,7 @@ Use the `-v` option for verbose output. ### Lint tests -#### Dependencies - -| Lint test | Dependency | -|-----------|:----------:| -| [`lint-python.py`](lint/lint-python.py) | [flake8](https://gitlab.com/pycqa/flake8) -| [`lint-python.py`](lint/lint-python.py) | [lief](https://github.com/lief-project/LIEF) -| [`lint-python.py`](lint/lint-python.py) | [mypy](https://github.com/python/mypy) -| [`lint-python.py`](lint/lint-python.py) | [pyzmq](https://github.com/zeromq/pyzmq) -| [`lint-python-dead-code.py`](lint/lint-python-dead-code.py) | [vulture](https://github.com/jendrikseipp/vulture) -| [`lint-shell.py`](lint/lint-shell.py) | [ShellCheck](https://github.com/koalaman/shellcheck) -| [`lint-spelling.py`](lint/lint-spelling.py) | [codespell](https://github.com/codespell-project/codespell) - -In use versions and install instructions are available in the [CI setup](../ci/lint/04_install.sh). - -Please be aware that on Linux distributions all dependencies are usually available as packages, but could be outdated. - -#### Running the tests - -Individual tests can be run by directly calling the test script, e.g.: - -``` -test/lint/lint-files.py -``` - -You can run all the shell-based lint tests by running: - -``` -test/lint/all-lint.py -``` +See the README in [test/lint](/test/lint). # Writing functional tests diff --git a/test/lint/README.md b/test/lint/README.md index 484008298b2..473b21b7370 100644 --- a/test/lint/README.md +++ b/test/lint/README.md @@ -22,6 +22,36 @@ To run the checks in the test runner outside the docker, use: ( cd ./test/lint/test_runner/ && cargo fmt && cargo clippy && cargo run ) ``` +#### Dependencies + +| Lint test | Dependency | +|-----------|:----------:| +| [`lint-python.py`](lint/lint-python.py) | [flake8](https://gitlab.com/pycqa/flake8) +| [`lint-python.py`](lint/lint-python.py) | [lief](https://github.com/lief-project/LIEF) +| [`lint-python.py`](lint/lint-python.py) | [mypy](https://github.com/python/mypy) +| [`lint-python.py`](lint/lint-python.py) | [pyzmq](https://github.com/zeromq/pyzmq) +| [`lint-python-dead-code.py`](lint/lint-python-dead-code.py) | [vulture](https://github.com/jendrikseipp/vulture) +| [`lint-shell.py`](lint/lint-shell.py) | [ShellCheck](https://github.com/koalaman/shellcheck) +| [`lint-spelling.py`](lint/lint-spelling.py) | [codespell](https://github.com/codespell-project/codespell) + +In use versions and install instructions are available in the [CI setup](../ci/lint/04_install.sh). + +Please be aware that on Linux distributions all dependencies are usually available as packages, but could be outdated. + +#### Running the tests + +Individual tests can be run by directly calling the test script, e.g.: + +``` +test/lint/lint-files.py +``` + +You can run all the shell-based lint tests by running: + +``` +test/lint/all-lint.py +``` + check-doc.py ============ Check for missing documentation of command line options. From fa2b95cf3f5148d27a8fd4fb3763ca1fc139bdd9 Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Thu, 11 Jan 2024 14:30:28 +0100 Subject: [PATCH 2/2] test: Remove all-lint.py script --- test/lint/README.md | 12 +----------- test/lint/all-lint.py | 23 ---------------------- test/lint/test_runner/src/main.rs | 32 ++++++++++++++++++++++--------- 3 files changed, 24 insertions(+), 43 deletions(-) delete mode 100755 test/lint/all-lint.py diff --git a/test/lint/README.md b/test/lint/README.md index 473b21b7370..1fba41d9eaa 100644 --- a/test/lint/README.md +++ b/test/lint/README.md @@ -16,7 +16,7 @@ result is cached and it prevents issues when the image changes. test runner =========== -To run the checks in the test runner outside the docker, use: +To run all the lint checks in the test runner outside the docker, use: ```sh ( cd ./test/lint/test_runner/ && cargo fmt && cargo clippy && cargo run ) @@ -46,12 +46,6 @@ Individual tests can be run by directly calling the test script, e.g.: test/lint/lint-files.py ``` -You can run all the shell-based lint tests by running: - -``` -test/lint/all-lint.py -``` - check-doc.py ============ Check for missing documentation of command line options. @@ -89,7 +83,3 @@ To do so, add the upstream repository as remote: ``` git remote add --fetch secp256k1 https://github.com/bitcoin-core/secp256k1.git ``` - -all-lint.py -=========== -Calls other scripts with the `lint-` prefix. diff --git a/test/lint/all-lint.py b/test/lint/all-lint.py deleted file mode 100755 index c7889796c6c..00000000000 --- a/test/lint/all-lint.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (c) 2017-2022 The Bitcoin Core developers -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. -# -# This script runs all test/lint/lint-* files, and fails if any exit -# with a non-zero status code. - -from glob import glob -from pathlib import Path -from subprocess import run -from sys import executable - -exit_code = 0 -mod_path = Path(__file__).parent -for lint in glob(f"{mod_path}/lint-*.py"): - result = run([executable, lint]) - if result.returncode != 0: - print(f"^---- failure generated from {lint.split('/')[-1]}") - exit_code |= result.returncode - -exit(exit_code) diff --git a/test/lint/test_runner/src/main.rs b/test/lint/test_runner/src/main.rs index ce94c3b6287..1dc79e97bdd 100644 --- a/test/lint/test_runner/src/main.rs +++ b/test/lint/test_runner/src/main.rs @@ -3,6 +3,7 @@ // file COPYING or https://opensource.org/license/mit/. use std::env; +use std::fs; use std::path::PathBuf; use std::process::Command; use std::process::ExitCode; @@ -29,8 +30,8 @@ fn check_output(cmd: &mut std::process::Command) -> Result { } /// Return the git root as utf8, or panic -fn get_git_root() -> String { - check_output(git().args(["rev-parse", "--show-toplevel"])).unwrap() +fn get_git_root() -> PathBuf { + PathBuf::from(check_output(git().args(["rev-parse", "--show-toplevel"])).unwrap()) } fn lint_subtree() -> LintResult { @@ -94,11 +95,24 @@ fn lint_doc() -> LintResult { } fn lint_all() -> LintResult { - if Command::new("test/lint/all-lint.py") - .status() - .expect("command error") - .success() - { + let mut good = true; + let lint_dir = get_git_root().join("test/lint"); + for entry in fs::read_dir(lint_dir).unwrap() { + let entry = entry.unwrap(); + let entry_fn = entry.file_name().into_string().unwrap(); + if entry_fn.starts_with("lint-") + && entry_fn.ends_with(".py") + && !Command::new("python3") + .arg(entry.path()) + .status() + .expect("command error") + .success() + { + good = false; + println!("^---- failure generated from {}", entry_fn); + } + } + if good { Ok(()) } else { Err("".to_string()) @@ -110,10 +124,10 @@ fn main() -> ExitCode { ("subtree check", lint_subtree), ("std::filesystem check", lint_std_filesystem), ("-help=1 documentation check", lint_doc), - ("all-lint.py script", lint_all), + ("lint-*.py scripts", lint_all), ]; - let git_root = PathBuf::from(get_git_root()); + let git_root = get_git_root(); let mut test_failed = false; for (lint_name, lint_fn) in test_list {