Create a Python package "tasst" with common helper code for use in passt and pasta tests. Initially it just has a placeholder selftest. Add a "make meta" target to run selftests for the test infrastructure itself. For now this runs the dummy selftest, the flake8 Python linter and the mypy static type checker. Signed-off-by: David Gibson <david(a)gibson.dropbear.id.au> --- test/Makefile | 30 ++++++++++++++++++++++++++++-- test/build/static_checkers.sh | 2 -- test/meta/.gitignore | 1 + test/meta/lint.sh | 28 ++++++++++++++++++++++++++++ test/tasst/.gitignore | 1 + test/tasst/__init__.py | 11 +++++++++++ test/tasst/__main__.py | 22 ++++++++++++++++++++++ 7 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 test/meta/.gitignore create mode 100644 test/meta/lint.sh create mode 100644 test/tasst/.gitignore create mode 100644 test/tasst/__init__.py create mode 100644 test/tasst/__main__.py diff --git a/test/Makefile b/test/Makefile index d5a0f776..1daf1999 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 +MYPY = mypy DEBIAN_IMGS = debian-8.11.0-openstack-amd64.qcow2 \ debian-9-nocloud-amd64-daily-20200210-166.qcow2 \ @@ -68,10 +70,18 @@ EXETER_JOBS = $(EXETER_SH:%.sh=%.json) AVOCADO_JOBS = $(EXETER_JOBS) avocado/static_checkers.json +TASST_SRCS = __init__.py __main__.py + +EXETER_META = meta/lint.json meta/tasst.json +META_JOBS = $(EXETER_META) + +PYPKGS = tasst + PYTHON = python3 VENV = venv PIP = $(VENV)/bin/pip3 RUN_AVOCADO = $(VENV)/bin/python3 run_avocado +PYTHONPATH = exeter/py3 CFLAGS = -Wall -Werror -Wextra -pedantic -std=c99 @@ -137,10 +147,26 @@ venv: %.json: %.sh pull-exeter sh $< --avocado > $@ +%.json: %.py pull-exeter + PYTHONPATH=$(PYTHONPATH) $(PYTHON) $< --avocado > $@ + +meta/tasst.json: $(TASST_SRCS:%=tasst/%) $(VENV) pull-exeter + PYTHONPATH=$(PYTHONPATH) $(PYTHON) -m tasst --avocado > $@ + .PHONY: avocado avocado: venv $(AVOCADO_JOBS) $(RUN_AVOCADO) all $(AVOCADO_JOBS) +.PHONY: meta +meta: venv $(META_JOBS) + PYTHONPATH=$(PYTHONPATH) $(RUN_AVOCADO) meta $(META_JOBS) + +flake8: + $(FLAKE8) $(PYPKGS) + +mypy: + PYTHONPATH=$(PYTHONPATH) $(MYPY) --no-namespace-packages --strict $(PYPKGS) + check: assets ./run @@ -152,8 +178,8 @@ clean: rm -f $(LOCAL_ASSETS) rm -rf test_logs rm -f prepared-*.qcow2 prepared-*.img - rm -rf $(VENV) - rm -f $(EXETER_JOBS) + rm -rf $(VENV) tasst/__pycache__ + 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 41152c25..e02503d4 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..661c2267 --- /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 flake8 +} +exeter_register flake8 + +mypy () { + make mypy +} +exeter_register mypy + +exeter_main "$@" diff --git a/test/tasst/.gitignore b/test/tasst/.gitignore new file mode 100644 index 00000000..c18dd8d8 --- /dev/null +++ b/test/tasst/.gitignore @@ -0,0 +1 @@ +__pycache__/ diff --git a/test/tasst/__init__.py b/test/tasst/__init__.py new file mode 100644 index 00000000..c1d5d9dd --- /dev/null +++ b/test/tasst/__init__.py @@ -0,0 +1,11 @@ +#! /usr/bin/env python3 + +# SPDX-License-Identifier: GPL-2.0-or-later +# +# Copyright Red Hat +# Author: David Gibson <david(a)gibson.dropbear.id.au> + +""" +Test A Simple Socket Transport +library of test helpers for passt & pasta +""" diff --git a/test/tasst/__main__.py b/test/tasst/__main__.py new file mode 100644 index 00000000..310e31d7 --- /dev/null +++ b/test/tasst/__main__.py @@ -0,0 +1,22 @@ +#! /usr/bin/env python3 + +# SPDX-License-Identifier: GPL-2.0-or-later +# +# Copyright Red Hat +# Author: David Gibson <david(a)gibson.dropbear.id.au> + +""" +Test A Simple Socket Transport +library of test helpers for passt & pasta +""" + +import exeter + + +(a)exeter.test +def placeholder() -> None: + pass + + +if __name__ == '__main__': + exeter.main() -- 2.46.0