You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bitcoin/test/lint
Hennadii Stepanov 13f5391bbb
Fix typos in `subprocess.hpp`
2 weeks ago
..
test_runner lint: Use git --no-pager to print any output in one go 2 months ago
README.md test: Refactor subtree exclusion in lint tests 1 month ago
check-doc.py init: completely remove `-zapwallettxes` (remaining hidden option) 6 months ago
commit-script-check.sh scripted-diff: Bump copyright headers 1 year ago
git-subtree-check.sh scripted-diff: Bump copyright headers 2 years ago
lint-assertions.py doc: Remove confusing assert linter 8 months ago
lint-circular-dependencies.py refactor: Remove unused circular include dependency from validation.cpp 6 months ago
lint-files.py test: use built-in collection types for type hints (Python 3.9 / PEP 585) 6 months ago
lint-format-strings.py logging: add LogError, LogWarning, LogInfo, LogDebug, LogTrace 4 months ago
lint-git-commit-check.py lint: Fix COMMIT_RANGE issues 1 month ago
lint-include-guards.py test: Refactor subtree exclusion in lint tests 1 month ago
lint-includes.py external_signer: replace boost::process with cpp-subprocess 1 month ago
lint-locale-dependence.py fuzz: Remove legacy int parse fuzz tests 1 year ago
lint-python-dead-code.py lint: Convert Python dead code linter to Python 2 years ago
lint-python-mutable-default-parameters.py scripted-diff: Use new python 3.7 keywords 1 year ago
lint-python-utf8-encoding.py lint: Ignore check_fileopens failure on **kwargs 9 months ago
lint-python.py lint: fix custom mypy cache dir setting 7 months ago
lint-qt-translation.py lint: Add `lint-qt-translation.py` 6 months ago
lint-shell-locale.py refactor: cleanups post unsubtree'ing univalue 2 years ago
lint-shell.py lint: Include test_utxo_snapshots in lint_shell 7 months ago
lint-spelling.py Fix typos in `subprocess.hpp` 2 weeks ago
lint-submodule.py scripted-diff: Use new python 3.7 keywords 1 year ago
lint-tests.py scripted-diff: Use new python 3.7 keywords 1 year ago
lint_ignore_dirs.py test: Refactor subtree exclusion in lint tests 1 month ago
run-lint-format-strings.py refactor: Enforce C-str fmt strings in WalletLogPrintf() 9 months ago
spelling.ignore-words.txt doc: fix typos 6 months ago

README.md

This folder contains lint scripts.

Running locally

To run linters locally with the same versions as the CI environment, use the included Dockerfile:

DOCKER_BUILDKIT=1 docker build -t bitcoin-linter --file "./ci/lint_imagefile" ./ && docker run --rm -v $(pwd):/bitcoin -it bitcoin-linter

Building the container can be done every time, because it is fast when the result is cached and it prevents issues when the image changes.

test runner

To run all the lint checks in the test runner outside the docker you first need to install the rust toolchain using your package manager of choice or rustup.

Then you can use:

( cd ./test/lint/test_runner/ && cargo fmt && cargo clippy && RUST_BACKTRACE=1 cargo run )

Dependencies

Lint test Dependency
lint-python.py flake8
lint-python.py lief
lint-python.py mypy
lint-python.py pyzmq
lint-python-dead-code.py vulture
lint-shell.py ShellCheck
lint-spelling.py codespell

In use versions and install instructions are available in the CI setup.

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 for missing documentation of command line options.

commit-script-check.sh

Verification of scripted diffs. Scripted diffs are only assumed to run on the latest LTS release of Ubuntu. Running them on other operating systems might require installing GNU tools, such as GNU sed.

git-subtree-check.sh

Run this script from the root of the repository to verify that a subtree matches the contents of the commit it claims to have been updated to.

Usage: test/lint/git-subtree-check.sh [-r] DIR [COMMIT]
       test/lint/git-subtree-check.sh -?
  • DIR is the prefix within the repository to check.
  • COMMIT is the commit to check, if it is not provided, HEAD will be used.
  • -r checks that subtree commit is present in repository.

To do a full check with -r, make sure that you have fetched the upstream repository branch in which the subtree is maintained:

To do so, add the upstream repository as remote:

git remote add --fetch secp256k1 https://github.com/bitcoin-core/secp256k1.git

lint_ignore_dirs.py

Add list of common directories to ignore when running tests