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
---
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
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
+
+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