We use both cppcheck and clang-tidy to lint our C code. Now that we're introducing Python code in the tests, use linters pycodestyle and flake8. Add a "make meta" target to run tests of the test infrastructure. For now it just has the linters, but we'll add more in future. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/Makefile | 22 +++++++++++++++++++--- test/build/static_checkers.sh | 2 -- test/meta/.gitignore | 1 + test/meta/lint.sh | 28 ++++++++++++++++++++++++++++ test/run_avocado | 5 +++-- 5 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 test/meta/.gitignore create mode 100644 test/meta/lint.sh diff --git a/test/Makefile b/test/Makefile index d24fce14..0b3ed3d0 100644 --- a/test/Makefile +++ b/test/Makefile @@ -6,6 +6,8 @@ # Author: David Gibson <david(a)gibson.dropbear.id.au> WGET = wget -c +FLAKE8 = flake8-3 +PYCODESTYLE = pycodestyle-3 DEBIAN_IMGS = debian-8.11.0-openstack-amd64.qcow2 \ debian-9-nocloud-amd64-daily-20200210-166.qcow2 \ @@ -66,9 +68,13 @@ ASSETS = $(DOWNLOAD_ASSETS) $(LOCAL_ASSETS) EXETER_SH = build/static_checkers.sh EXETER_PY = build/build.py EXETER_JOBS = $(EXETER_SH:%.sh=%.json) $(EXETER_PY:%.py=%.json) - AVOCADO_JOBS = $(EXETER_JOBS) avocado/static_checkers.json +EXETER_META = meta/lint.json +META_JOBS = $(EXETER_META) + +PYPKGS = $(EXETER_PY) + PYTHON = python3 VENV = venv PIP = $(VENV)/bin/pip3 @@ -147,7 +153,17 @@ venv: pull-exeter .PHONY: avocado avocado: venv $(AVOCADO_JOBS) - $(RUN_AVOCADO) $(AVOCADO_JOBS) + $(RUN_AVOCADO) all $(AVOCADO_JOBS) + +.PHONY: meta +meta: venv $(META_JOBS) + $(RUN_AVOCADO) meta $(META_JOBS) + +flake8: + $(FLAKE8) $(PYPKGS) + +pycodestyle: + $(PYCODESTYLE) $(PYPKGS) check: assets ./run @@ -161,7 +177,7 @@ clean: rm -rf test_logs rm -f prepared-*.qcow2 prepared-*.img rm -rf $(VENV) - rm -f $(EXETER_JOBS) + rm -f $(EXETER_JOBS) $(EXETER_META) realclean: clean rm -rf $(DOWNLOAD_ASSETS) diff --git a/test/build/static_checkers.sh b/test/build/static_checkers.sh index ec159ea2..fa07f8fd 100644 --- a/test/build/static_checkers.sh +++ b/test/build/static_checkers.sh @@ -26,5 +26,3 @@ clang_tidy () { exeter_register clang_tidy exeter_main "$@" - - diff --git a/test/meta/.gitignore b/test/meta/.gitignore new file mode 100644 index 00000000..a6c57f5f --- /dev/null +++ b/test/meta/.gitignore @@ -0,0 +1 @@ +*.json diff --git a/test/meta/lint.sh b/test/meta/lint.sh new file mode 100644 index 00000000..6cbaa5d4 --- /dev/null +++ b/test/meta/lint.sh @@ -0,0 +1,28 @@ +#! /bin/sh +# +# SPDX-License-Identifier: GPL-2.0-or-later +# +# PASST - Plug A Simple Socket Transport +# for qemu/UNIX domain socket mode +# +# PASTA - Pack A Subtle Tap Abstraction +# for network namespace/tap device mode +# +# test/meta/lint.sh - Linters for the test code +# +# Copyright Red Hat +# Author: David Gibson <david(a)gibson.dropbear.id.au> + +source $(dirname $0)/../exeter/sh/exeter.sh + +flake8 () { + make -C test flake8 +} +exeter_register flake8 + +pycodestyle () { + make -C test pycodestyle +} +exeter_register pycodestyle + +exeter_main "$@" diff --git a/test/run_avocado b/test/run_avocado index 26a226ce..b62864f6 100755 --- a/test/run_avocado +++ b/test/run_avocado @@ -35,13 +35,14 @@ def main(): os.path.dirname(os.path.dirname(__file__)) ) - references = [os.path.join(repo_root_path, 'test', x) for x in sys.argv[1:]] + suitename = sys.argv[1] + references = [os.path.join(repo_root_path, 'test', x) for x in sys.argv[2:]] config = { "resolver.references": references, "runner.identifier_format": "{args}", } - suite = TestSuite.from_config(config, name="all") + suite = TestSuite.from_config(config, name=suitename) with Job(config, [suite]) as j: return j.run() -- 2.45.2