Introduce some trivial testcases based on the exeter library. These run
the C static checkers, which is redundant with the included Avocado json
file, but are useful as an example. We extend the make avocado target to
generate Avocado job files from the exeter tests and include them in the
test run.
Signed-off-by: David Gibson
---
test/.gitignore | 1 +
test/Makefile | 18 +++++++++++++++---
test/build/.gitignore | 1 +
test/build/static_checkers.sh | 30 ++++++++++++++++++++++++++++++
test/run_avocado | 2 +-
5 files changed, 48 insertions(+), 4 deletions(-)
create mode 100644 test/build/.gitignore
create mode 100644 test/build/static_checkers.sh
diff --git a/test/.gitignore b/test/.gitignore
index a79d5b6f..bded349b 100644
--- a/test/.gitignore
+++ b/test/.gitignore
@@ -11,3 +11,4 @@ nstool
guest-key
guest-key.pub
/venv/
+/exeter/
diff --git a/test/Makefile b/test/Makefile
index fda62984..dae25312 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -52,7 +52,7 @@ UBUNTU_NEW_IMGS = xenial-server-cloudimg-powerpc-disk1.img \
jammy-server-cloudimg-s390x.img
UBUNTU_IMGS = $(UBUNTU_OLD_IMGS) $(UBUNTU_NEW_IMGS)
-DOWNLOAD_ASSETS = mbuto podman \
+DOWNLOAD_ASSETS = exeter mbuto podman \
$(DEBIAN_IMGS) $(FEDORA_IMGS) $(OPENSUSE_IMGS) $(UBUNTU_IMGS)
TESTDATA_ASSETS = small.bin big.bin medium.bin
LOCAL_ASSETS = mbuto.img mbuto.mem.img podman/bin/podman QEMU_EFI.fd \
@@ -63,6 +63,11 @@ LOCAL_ASSETS = mbuto.img mbuto.mem.img podman/bin/podman QEMU_EFI.fd \
ASSETS = $(DOWNLOAD_ASSETS) $(LOCAL_ASSETS)
+EXETER_SH = build/static_checkers.sh
+EXETER_JOBS = $(EXETER_SH:%.sh=%.json)
+
+AVOCADO_JOBS = $(EXETER_JOBS) avocado/static_checkers.json
+
SYSTEM_PYTHON = python3
VENV = venv
PYTHON = $(VENV)/bin/python3
@@ -77,6 +82,9 @@ assets: $(ASSETS)
pull-%: %
git -C $* pull
+exeter:
+ git clone https://gitlab.com/dgibson/exeter.git
+
mbuto:
git clone git://mbuto.sh/mbuto
@@ -127,9 +135,12 @@ venv:
$(SYSTEM_PYTHON) -m venv $(VENV)
$(PIP) install avocado-framework
+%.json: %.sh pull-exeter
+ cd ..; sh test/$< --avocado > test/$@
+
.PHONY: avocado
-avocado: venv
- $(RUN_AVOCADO) avocado
+avocado: venv $(AVOCADO_JOBS)
+ $(RUN_AVOCADO) $(AVOCADO_JOBS)
check: assets
./run
@@ -143,6 +154,7 @@ clean:
rm -rf test_logs
rm -f prepared-*.qcow2 prepared-*.img
rm -rf $(VENV)
+ rm -f $(EXETER_JOBS)
realclean: clean
rm -rf $(DOWNLOAD_ASSETS)
diff --git a/test/build/.gitignore b/test/build/.gitignore
new file mode 100644
index 00000000..a6c57f5f
--- /dev/null
+++ b/test/build/.gitignore
@@ -0,0 +1 @@
+*.json
diff --git a/test/build/static_checkers.sh b/test/build/static_checkers.sh
new file mode 100644
index 00000000..ec159ea2
--- /dev/null
+++ b/test/build/static_checkers.sh
@@ -0,0 +1,30 @@
+#! /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/build/static_checkers.sh - Run static checkers
+#
+# Copyright Red Hat
+# Author: David Gibson
+
+source $(dirname $0)/../exeter/sh/exeter.sh
+
+cppcheck () {
+ make cppcheck
+}
+exeter_register cppcheck
+
+clang_tidy () {
+ make clang-tidy
+}
+exeter_register clang_tidy
+
+exeter_main "$@"
+
+
diff --git a/test/run_avocado b/test/run_avocado
index 19a94a8f..d518b9ec 100755
--- a/test/run_avocado
+++ b/test/run_avocado
@@ -39,7 +39,7 @@ def main():
config = {
"resolver.references": references,
- "runner.identifier_format": "{args[0]}",
+ "runner.identifier_format": "{args}",
}
suite = TestSuite.from_config(config, name="static_checkers")
with Job(config, [suite]) as j:
--
2.45.2