mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-10 20:03:34 -03:00
Merge bitcoin/bitcoin#29228: test: Remove all-lint.py script
fa2b95cf3f
test: Remove all-lint.py script (MarcoFalke)fadb06c361
doc: move-only lint docs to one place (MarcoFalke) Pull request description: Seems confusing to have a test runner that calls another runner (`all-lint.py`), which calls a subset of the lint tests. Fix that by just calling this subset of lint tests in the test runner directly, and remove the now unused `all-lint.py`. To run all lint checks locally, refer to the documentation: https://github.com/bitcoin/bitcoin/blob/master/test/lint/README.md#running-locally ACKs for top commit: kevkevinpal: ACK [fa2b95c
](fa2b95cf3f
) achow101: ACKfa2b95cf3f
TheCharlatan: ACKfa2b95cf3f
pablomartin4btc: tACKfa2b95cf3f
brunoerg: utACKfa2b95cf3f
Tree-SHA512: 43fac9acb4e9a6744d695dd49c7202e19ab4bf480f4cccff768647d0157a065f40e6ad70b9f6a65ba42048cc5fa9834365aa8e7aa0ed64c09e0cd4eb8dccb831
This commit is contained in:
commit
ac3901ebd0
4 changed files with 49 additions and 66 deletions
|
@ -326,35 +326,7 @@ Use the `-v` option for verbose output.
|
||||||
|
|
||||||
### Lint tests
|
### Lint tests
|
||||||
|
|
||||||
#### Dependencies
|
See the README in [test/lint](/test/lint).
|
||||||
|
|
||||||
| 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
|
|
||||||
```
|
|
||||||
|
|
||||||
# Writing functional tests
|
# Writing functional tests
|
||||||
|
|
||||||
|
|
|
@ -16,12 +16,36 @@ result is cached and it prevents issues when the image changes.
|
||||||
test runner
|
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
|
```sh
|
||||||
( cd ./test/lint/test_runner/ && cargo fmt && cargo clippy && cargo run )
|
( 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
|
||||||
|
```
|
||||||
|
|
||||||
check-doc.py
|
check-doc.py
|
||||||
============
|
============
|
||||||
Check for missing documentation of command line options.
|
Check for missing documentation of command line options.
|
||||||
|
@ -59,7 +83,3 @@ To do so, add the upstream repository as remote:
|
||||||
```
|
```
|
||||||
git remote add --fetch secp256k1 https://github.com/bitcoin-core/secp256k1.git
|
git remote add --fetch secp256k1 https://github.com/bitcoin-core/secp256k1.git
|
||||||
```
|
```
|
||||||
|
|
||||||
all-lint.py
|
|
||||||
===========
|
|
||||||
Calls other scripts with the `lint-` prefix.
|
|
||||||
|
|
|
@ -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)
|
|
|
@ -3,6 +3,7 @@
|
||||||
// file COPYING or https://opensource.org/license/mit/.
|
// file COPYING or https://opensource.org/license/mit/.
|
||||||
|
|
||||||
use std::env;
|
use std::env;
|
||||||
|
use std::fs;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
use std::process::ExitCode;
|
use std::process::ExitCode;
|
||||||
|
@ -29,8 +30,8 @@ fn check_output(cmd: &mut std::process::Command) -> Result<String, LintError> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return the git root as utf8, or panic
|
/// Return the git root as utf8, or panic
|
||||||
fn get_git_root() -> String {
|
fn get_git_root() -> PathBuf {
|
||||||
check_output(git().args(["rev-parse", "--show-toplevel"])).unwrap()
|
PathBuf::from(check_output(git().args(["rev-parse", "--show-toplevel"])).unwrap())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn lint_subtree() -> LintResult {
|
fn lint_subtree() -> LintResult {
|
||||||
|
@ -94,11 +95,24 @@ fn lint_doc() -> LintResult {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn lint_all() -> LintResult {
|
fn lint_all() -> LintResult {
|
||||||
if Command::new("test/lint/all-lint.py")
|
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()
|
.status()
|
||||||
.expect("command error")
|
.expect("command error")
|
||||||
.success()
|
.success()
|
||||||
{
|
{
|
||||||
|
good = false;
|
||||||
|
println!("^---- failure generated from {}", entry_fn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if good {
|
||||||
Ok(())
|
Ok(())
|
||||||
} else {
|
} else {
|
||||||
Err("".to_string())
|
Err("".to_string())
|
||||||
|
@ -110,10 +124,10 @@ fn main() -> ExitCode {
|
||||||
("subtree check", lint_subtree),
|
("subtree check", lint_subtree),
|
||||||
("std::filesystem check", lint_std_filesystem),
|
("std::filesystem check", lint_std_filesystem),
|
||||||
("-help=1 documentation check", lint_doc),
|
("-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;
|
let mut test_failed = false;
|
||||||
for (lint_name, lint_fn) in test_list {
|
for (lint_name, lint_fn) in test_list {
|
||||||
|
|
Loading…
Reference in a new issue