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
This commit is contained in:
Monty Taylor 2018-01-23 10:07:28 -06:00
parent 35732351ca
commit 68e02466ce
No known key found for this signature in database
GPG Key ID: 7BAE94BC7141A594
6 changed files with 37 additions and 31 deletions

7
.coveragerc Normal file
View File

@ -0,0 +1,7 @@
[run]
branch = True
source = zuul
omit = tests/*
[report]
ignore_errors = True

3
.stestr.conf Normal file
View File

@ -0,0 +1,3 @@
[DEFAULT]
test_path=tests/unit
top_dir=./

View File

@ -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

View File

@ -50,6 +50,7 @@ Run The Tests
*Navigate to the project's root directory and execute*:: *Navigate to the project's root directory and execute*::
tox tox
Note: completing this command may take a long time (depends on system resources) Note: completing this command may take a long time (depends on system resources)
also, you might not see any output until tox is complete. 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:: To run the test suite in just one of the environments in envlist execute::
tox -e <env> tox -e <env>
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 Run One Test
------------ ------------
@ -79,20 +80,20 @@ To run individual tests with tox::
tox -e <env> -- path.to.module.Class.test tox -e <env> -- 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 *run one test in the foreground* (after previously having run tox
to set up the virtualenv):: 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 List Failing Tests
------------------ ------------------
.tox/py27/bin/activate .tox/py35/bin/activate
testr failing --list stestr failing --list
Hanging Tests Hanging Tests
------------- -------------
@ -100,8 +101,8 @@ Hanging Tests
The following will run each test in turn and print the name of the The following will run each test in turn and print the name of the
test as it is run:: test as it is run::
. .tox/py27/bin/activate . .tox/py35/bin/activate
testr run --subunit | subunit2pyunit stestr run
You can compare the output of that to:: You can compare the output of that to::
@ -110,10 +111,4 @@ You can compare the output of that to::
Need More Info? Need More Info?
--------------- ---------------
More information about testr: https://wiki.openstack.org/wiki/Testr More information about stestr: http://stestr.readthedocs.io/en/latest/
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

View File

@ -4,8 +4,7 @@ coverage>=3.6
sphinx>=1.5.1,<1.6 sphinx>=1.5.1,<1.6
sphinxcontrib-blockdiag>=1.1.0 sphinxcontrib-blockdiag>=1.1.0
fixtures>=0.3.14 fixtures>=0.3.14
python-subunit stestr>=1.0.0 # Apache-2.0
testrepository>=0.0.17
testtools>=0.9.32 testtools>=0.9.32
sphinxcontrib-programoutput sphinxcontrib-programoutput
sphinx-autodoc-typehints sphinx-autodoc-typehints

24
tox.ini
View File

@ -7,13 +7,17 @@ envlist = pep8,py35
basepython = python3 basepython = python3
setenv = VIRTUAL_ENV={envdir} setenv = VIRTUAL_ENV={envdir}
OS_TEST_TIMEOUT=150 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 passenv = ZUUL_TEST_ROOT OS_STDOUT_CAPTURE OS_STDERR_CAPTURE OS_LOG_CAPTURE OS_LOG_DEFAULTS
usedevelop = True usedevelop = True
install_command = pip install {opts} {packages} install_command = pip install {opts} {packages}
deps = -r{toxinidir}/requirements.txt deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt -r{toxinidir}/test-requirements.txt
commands = commands = stestr run {posargs}
python setup.py test --slowest --testr-args='{posargs}' stestr slowest
[testenv:bindep] [testenv:bindep]
# Do not install any requirements. We want this to be fast and work even if # 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 mypy --ignore-missing-imports zuul
[testenv:cover] [testenv:cover]
setenv =
{[testenv]setenv}
PYTHON=coverage run --source zuul --parallel-mode
commands = commands =
python setup.py test --coverage stestr run {posargs}
coverage combine
coverage html -d cover
coverage xml -o cover/coverage.xml
[testenv:docs] [testenv:docs]
commands = commands =
@ -43,15 +53,11 @@ commands =
commands = {posargs} commands = {posargs}
[testenv:nodepool] [testenv:nodepool]
setenv = commands = stestr run --concurrency=1 --test-path ./tests/nodepool {posargs}
OS_TEST_PATH = ./tests/nodepool
commands = python setup.py test --slowest --testr-args='--concurrency=1 {posargs}'
[testenv:remote] [testenv:remote]
setenv = commands = stestr run --concurrency=1 --test-path ./tests/remote {posargs}
OS_TEST_PATH = ./tests/remote
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 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] [flake8]
# These are ignored intentionally in openstack-infra projects; # These are ignored intentionally in openstack-infra projects;