From 68e02466ce13a5dbc01ada10b2704701544717dd Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Tue, 23 Jan 2018 10:07:28 -0600 Subject: [PATCH] Switch to stestr stestr is actively maintained. OpenStack is migrating to stestr, go ahead and follow suit. As part of this, shift the default values for STDOUT capture into the tox.ini file. This preserves the current behavior of tox doing capture and running tests directly not capturing. Remove the depend on python-subunit... stestr takes care of that for us. Change-Id: I90ae343a5db966f74e888bb98aab0bf39dcdd2cb --- .coveragerc | 7 +++++++ .stestr.conf | 3 +++ .testr.conf | 4 ---- TESTING.rst | 27 +++++++++++---------------- test-requirements.txt | 3 +-- tox.ini | 24 +++++++++++++++--------- 6 files changed, 37 insertions(+), 31 deletions(-) create mode 100644 .coveragerc create mode 100644 .stestr.conf delete mode 100644 .testr.conf diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 0000000000..b10a8654dd --- /dev/null +++ b/.coveragerc @@ -0,0 +1,7 @@ +[run] +branch = True +source = zuul +omit = tests/* + +[report] +ignore_errors = True diff --git a/.stestr.conf b/.stestr.conf new file mode 100644 index 0000000000..2978dacaaa --- /dev/null +++ b/.stestr.conf @@ -0,0 +1,3 @@ +[DEFAULT] +test_path=tests/unit +top_dir=./ diff --git a/.testr.conf b/.testr.conf deleted file mode 100644 index 7e8d028994..0000000000 --- a/.testr.conf +++ /dev/null @@ -1,4 +0,0 @@ -[DEFAULT] -test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} OS_LOG_CAPTURE=${OS_LOG_CAPTURE:-1} OS_LOG_DEFAULTS=${OS_LOG_DEFAULTS:-""} ${PYTHON:-python} -m subunit.run discover -t ./ ${OS_TEST_PATH:-./tests/unit} $LISTOPT $IDOPTION -test_id_option=--load-list $IDFILE -test_list_option=--list diff --git a/TESTING.rst b/TESTING.rst index 289af5c2bc..24da82da9d 100644 --- a/TESTING.rst +++ b/TESTING.rst @@ -50,6 +50,7 @@ Run The Tests *Navigate to the project's root directory and execute*:: tox + Note: completing this command may take a long time (depends on system resources) also, you might not see any output until tox is complete. @@ -68,9 +69,9 @@ Tox will run your entire test suite in the environments specified in the project To run the test suite in just one of the environments in envlist execute:: tox -e -so for example, *run the test suite in py26*:: +so for example, *run the test suite in py35*:: - tox -e py26 + tox -e py35 Run One Test ------------ @@ -79,20 +80,20 @@ To run individual tests with tox:: tox -e -- path.to.module.Class.test -For example, to *run the basic Zuul test*:: +For example, to *run a single Zuul test*:: - tox -e py27 -- tests.unit.test_scheduler.TestScheduler.test_jobs_executed + tox -e py35 -- tests.unit.test_scheduler.TestScheduler.test_jobs_executed To *run one test in the foreground* (after previously having run tox to set up the virtualenv):: - .tox/py27/bin/python -m testtools.run tests.unit.test_scheduler.TestScheduler.test_jobs_executed + .tox/py35/bin/stestr run -t tests.unit.test_scheduler.TestScheduler.test_jobs_executed List Failing Tests ------------------ - .tox/py27/bin/activate - testr failing --list + .tox/py35/bin/activate + stestr failing --list Hanging Tests ------------- @@ -100,8 +101,8 @@ Hanging Tests The following will run each test in turn and print the name of the test as it is run:: - . .tox/py27/bin/activate - testr run --subunit | subunit2pyunit + . .tox/py35/bin/activate + stestr run You can compare the output of that to:: @@ -110,10 +111,4 @@ You can compare the output of that to:: Need More Info? --------------- -More information about testr: https://wiki.openstack.org/wiki/Testr - -More information about nose: https://nose.readthedocs.org/en/latest/ - - -More information about testing OpenStack code can be found here: -https://wiki.openstack.org/wiki/Testing +More information about stestr: http://stestr.readthedocs.io/en/latest/ diff --git a/test-requirements.txt b/test-requirements.txt index ae033094d2..98880cd778 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -4,8 +4,7 @@ coverage>=3.6 sphinx>=1.5.1,<1.6 sphinxcontrib-blockdiag>=1.1.0 fixtures>=0.3.14 -python-subunit -testrepository>=0.0.17 +stestr>=1.0.0 # Apache-2.0 testtools>=0.9.32 sphinxcontrib-programoutput sphinx-autodoc-typehints diff --git a/tox.ini b/tox.ini index 4968469903..24a78c27a2 100644 --- a/tox.ini +++ b/tox.ini @@ -7,13 +7,17 @@ envlist = pep8,py35 basepython = python3 setenv = VIRTUAL_ENV={envdir} OS_TEST_TIMEOUT=150 + OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:1} + OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:1} + OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:1} + OS_LOG_DEFAULTS={env:OS_LOG_DEFAULTS:""} passenv = ZUUL_TEST_ROOT OS_STDOUT_CAPTURE OS_STDERR_CAPTURE OS_LOG_CAPTURE OS_LOG_DEFAULTS usedevelop = True install_command = pip install {opts} {packages} deps = -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt -commands = - python setup.py test --slowest --testr-args='{posargs}' +commands = stestr run {posargs} + stestr slowest [testenv:bindep] # Do not install any requirements. We want this to be fast and work even if @@ -32,8 +36,14 @@ commands = mypy --ignore-missing-imports zuul [testenv:cover] +setenv = + {[testenv]setenv} + PYTHON=coverage run --source zuul --parallel-mode commands = - python setup.py test --coverage + stestr run {posargs} + coverage combine + coverage html -d cover + coverage xml -o cover/coverage.xml [testenv:docs] commands = @@ -43,15 +53,11 @@ commands = commands = {posargs} [testenv:nodepool] -setenv = - OS_TEST_PATH = ./tests/nodepool -commands = python setup.py test --slowest --testr-args='--concurrency=1 {posargs}' +commands = stestr run --concurrency=1 --test-path ./tests/nodepool {posargs} [testenv:remote] -setenv = - OS_TEST_PATH = ./tests/remote +commands = stestr run --concurrency=1 --test-path ./tests/remote {posargs} passenv = ZUUL_TEST_ROOT OS_STDOUT_CAPTURE OS_STDERR_CAPTURE OS_LOG_CAPTURE OS_LOG_DEFAULTS ZUUL_REMOTE_IPV4 ZUUL_SSH_KEY NODEPOOL_ZK_HOST -commands = python setup.py test --slowest --testr-args='--concurrency=1 {posargs}' [flake8] # These are ignored intentionally in openstack-infra projects;