diff options
author | Tom Rini <trini@konsulko.com> | 2024-10-08 13:56:50 -0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2024-10-08 13:56:50 -0600 |
commit | 0344c602eadc0802776b65ff90f0a02c856cf53c (patch) | |
tree | 236a705740939b84ff37d68ae650061dd14c3449 /tests/scripts/check-python-files.sh |
Squashed 'lib/mbedtls/external/mbedtls/' content from commit 2ca6c285a0dd
git-subtree-dir: lib/mbedtls/external/mbedtls
git-subtree-split: 2ca6c285a0dd3f33982dd57299012dacab1ff206
Diffstat (limited to 'tests/scripts/check-python-files.sh')
-rwxr-xr-x | tests/scripts/check-python-files.sh | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/scripts/check-python-files.sh b/tests/scripts/check-python-files.sh new file mode 100755 index 00000000000..51e80792b0c --- /dev/null +++ b/tests/scripts/check-python-files.sh @@ -0,0 +1,68 @@ +#! /usr/bin/env sh + +# Copyright The Mbed TLS Contributors +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + +# Purpose: check Python files for potential programming errors or maintenance +# hurdles. Run pylint to detect some potential mistakes and enforce PEP8 +# coding standards. Run mypy to perform static type checking. + +# We'll keep going on errors and report the status at the end. +ret=0 + +if type python3 >/dev/null 2>/dev/null; then + PYTHON=python3 +else + PYTHON=python +fi + +check_version () { + $PYTHON - "$2" <<EOF +import packaging.version +import sys +import $1 as package +actual = package.__version__ +wanted = sys.argv[1] +if packaging.version.parse(actual) < packaging.version.parse(wanted): + sys.stderr.write("$1: version %s is too old (want %s)\n" % (actual, wanted)) + exit(1) +EOF +} + +can_pylint () { + # Pylint 1.5.2 from Ubuntu 16.04 is too old: + # E: 34, 0: Unable to import 'mbedtls_dev' (import-error) + # Pylint 1.8.3 from Ubuntu 18.04 passed on the first commit containing this line. + check_version pylint 1.8.3 +} + +can_mypy () { + # mypy 0.770 is too old: + # tests/scripts/test_psa_constant_names.py:34: error: Cannot find implementation or library stub for module named 'mbedtls_dev' + # mypy 0.780 from pip passed on the first commit containing this line. + check_version mypy.version 0.780 +} + +# With just a --can-xxx option, check whether the tool for xxx is available +# with an acceptable version, and exit without running any checks. The exit +# status is true if the tool is available and acceptable and false otherwise. +if [ "$1" = "--can-pylint" ]; then + can_pylint + exit +elif [ "$1" = "--can-mypy" ]; then + can_mypy + exit +fi + +echo 'Running pylint ...' +$PYTHON -m pylint scripts/mbedtls_dev/*.py scripts/*.py tests/scripts/*.py || { + echo >&2 "pylint reported errors" + ret=1 +} + +echo +echo 'Running mypy ...' +$PYTHON -m mypy scripts/*.py tests/scripts/*.py || + ret=1 + +exit $ret |