On 16/07/2024 17.15, Fabiano Rosas wrote:
Thomas Huth <th...@redhat.com> writes:

Integrate the new python-based test framework with the meson build
system. Since these tests now require the pycotap module, make
sure that it gets installed in the venv.

The changes to the meson.build files are partly based on an earlier
patch by Ani Sinha (but heavily modified by Thomas Huth e.g. to use
pycotap for running the tests instead).

Signed-off-by: Thomas Huth <th...@redhat.com>

Just one touch-up below.

Reviewed-by: Fabiano Rosas <faro...@suse.de>

---
  pythondeps.toml              |  3 +-
  tests/Makefile.include       | 18 ++++++++-
  tests/functional/meson.build | 75 ++++++++++++++++++++++++++++++++++++
  tests/meson.build            |  1 +
  4 files changed, 95 insertions(+), 2 deletions(-)
  create mode 100644 tests/functional/meson.build

diff --git a/pythondeps.toml b/pythondeps.toml
index f6e590fdd8..c018b4d74a 100644
--- a/pythondeps.toml
+++ b/pythondeps.toml
@@ -26,9 +26,10 @@ meson = { accepted = ">=1.1.0", installed = "1.2.3", canary = 
"meson" }
  sphinx = { accepted = ">=3.4.3", installed = "5.3.0", canary = "sphinx-build" 
}
  sphinx_rtd_theme = { accepted = ">=0.5", installed = "1.1.1" }
-[avocado]
+[tests]
  # Note that qemu.git/python/ is always implicitly installed.
  # Prefer an LTS version when updating the accepted versions of
  # avocado-framework, for example right now the limit is 92.x.
  avocado-framework = { accepted = "(>=88.1, <93.0)", installed = "88.1", canary = 
"avocado" }
  pycdlib = { accepted = ">=1.11.0" }
+pycotap = { accepted = ">=1.1.0" }
diff --git a/tests/Makefile.include b/tests/Makefile.include
index d39d5dd6a4..2bdf607977 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -9,6 +9,8 @@ check-help:
        @echo "Individual test suites:"
        @echo " $(MAKE) check-qtest-TARGET     Run qtest tests for given target"
        @echo " $(MAKE) check-qtest            Run qtest tests"
+       @echo " $(MAKE) check-functional       Run python-based functional 
tests"
+       @echo " $(MAKE) check-functional-TARG  Run functional tests for
a given target"
        @echo " $(MAKE) check-unit             Run qobject tests"
        @echo " $(MAKE) check-qapi-schema      Run QAPI schema tests"
        @echo " $(MAKE) check-block            Run block tests"
@@ -111,7 +113,7 @@ quiet-venv-pip = $(quiet-@)$(call quiet-command-run, \
$(TESTS_VENV_TOKEN): $(SRC_PATH)/pythondeps.toml
        $(call quiet-venv-pip,install -e "$(SRC_PATH)/python/")
-       $(MKVENV_ENSUREGROUP) $< avocado
+       $(MKVENV_ENSUREGROUP) $< tests
        $(call quiet-command, touch $@)
$(TESTS_RESULTS_DIR):
@@ -152,6 +154,20 @@ check-acceptance-deprecated-warning:
check-acceptance: check-acceptance-deprecated-warning | check-avocado +# Make sure that pycotap is installed before running any functional tests:
+ifneq ($(filter check-func%,$(MAKECMDGOALS))$(filter check,$(MAKECMDGOALS)),)
+do-meson-check: check-venv
+endif
+
+FUNCTIONAL_TARGETS=$(patsubst %-softmmu,check-functional-%, $(filter 
%-softmmu,$(TARGETS)))
+.PHONY: $(FUNCTIONAL_TARGETS)
+$(FUNCTIONAL_TARGETS):
+       @make SPEED=thorough $(subst -functional,-func,$@)
+
+.PHONY: check-functional
+check-functional:
+       @make SPEED=thorough check-func check-func-quick

I think these^ two should use $(MAKE) instead:

make[1]: warning: jobserver unavailable: using -j1.  Add '+' to parent
make rule.

Right, thanks! I'll change it in the next version.

 Thomas


Reply via email to