qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v6 1/3] Bootstrap Python venv for tests


From: Wainer dos Santos Moschetta
Subject: Re: [Qemu-devel] [PATCH v6 1/3] Bootstrap Python venv for tests
Date: Wed, 17 Oct 2018 16:30:53 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2


On 10/17/2018 01:05 PM, Cleber Rosa wrote:
A number of QEMU tests are written in Python, and may benefit
from an untainted Python venv.

By using make rules, tests that depend on specific Python libs
can set that rule as a requirement, along with rules that require
the presence or installation of specific libraries.

The tests/venv-requirements.txt is supposed to contain the
Python requirements that should be added to the venv created
by check-venv.

Signed-off-by: Cleber Rosa <address@hidden>
Tested-by: Philippe Mathieu-Daudé <address@hidden>
Acked-by: Stefan Hajnoczi <address@hidden>
---
  tests/Makefile.include | 26 ++++++++++++++++++++++++++
  tests/requirements.txt |  3 +++
  2 files changed, 29 insertions(+)
  create mode 100644 tests/requirements.txt

diff --git a/tests/Makefile.include b/tests/Makefile.include
index 5eadfd52f9..4b88a119e0 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -12,6 +12,7 @@ check-help:
        @echo " $(MAKE) check-block          Run block tests"
        @echo " $(MAKE) check-tcg            Run TCG tests"
        @echo " $(MAKE) check-report.html    Generates an HTML test report"
+       @echo " $(MAKE) check-venv           Creates a Python venv for tests"
        @echo " $(MAKE) check-clean          Clean the tests"
        @echo
        @echo "Please note that HTML reports do not regenerate if the unit 
tests"
@@ -1017,6 +1018,30 @@ check-decodetree:
            ./check.sh "$(PYTHON)" "$(SRC_PATH)/scripts/decodetree.py", \
            TEST, decodetree.py)
+# Python venv for running tests
+
+.PHONY: check-venv
+
+TESTS_VENV_DIR=$(BUILD_DIR)/tests/venv
+TESTS_VENV_REQ=$(SRC_PATH)/tests/requirements.txt
+
+PYTHON_VER := $(findstring Python 3,$(shell $(PYTHON) -V))
+ifeq ($(PYTHON_VER),Python 3)
+$(TESTS_VENV_DIR): $(TESTS_VENV_REQ)
+       $(call quiet-command, \
+            $(PYTHON) -m venv --system-site-packages $@, \
+            VENV, $@)
+       $(call quiet-command, \
+            $(TESTS_VENV_DIR)/bin/python -m pip -q install -r 
$(TESTS_VENV_REQ), \
+            PIP, $(TESTS_VENV_REQ))
+       $(call quiet-command, touch $@)
+else
+$(TESTS_VENV_DIR):
+       $(error "venv directory for tests requires Python 3")

Above line is indented with space instead of tab. Thus, it breaks the build:

# make -j4
Python 2.7.15
/root/qemu/tests/Makefile.include:1040: *** "venv directory for tests requires Python 3".  Stop.

Also make check-help prints python's version when the build was configured with py2 (or the system lacks py3):

# make check-help
Python 2.7.15
Regression testing targets:

 make check                Run all tests
 make check-qtest-TARGET   Run qtest tests for given target
<output omitted>

I tested this patch series on Fedora 28 x86_64. It works fine except for above issues, so once fixing them:

Acked-by: Wainer dos Santos Moschetta <address@hidden>


+endif
+
+check-venv: $(TESTS_VENV_DIR)
+
  # Consolidated targets
.PHONY: check-qapi-schema check-qtest check-unit check check-clean
@@ -1030,6 +1055,7 @@ check-clean:
        rm -rf $(check-unit-y) tests/*.o $(QEMU_IOTESTS_HELPERS-y)
        rm -rf $(sort $(foreach target,$(SYSEMU_TARGET_LIST), 
$(check-qtest-$(target)-y)) $(check-qtest-generic-y))
        rm -f tests/test-qapi-gen-timestamp
+       rm -rf $(TESTS_VENV_DIR)
clean: check-clean diff --git a/tests/requirements.txt b/tests/requirements.txt
new file mode 100644
index 0000000000..d39f9d1576
--- /dev/null
+++ b/tests/requirements.txt
@@ -0,0 +1,3 @@
+# Add Python module requirements, one per line, to be installed
+# in the tests/venv Python virtual environment. For more info,
+# refer to: https://pip.pypa.io/en/stable/user_guide/#id1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]