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*::
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 <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
------------
@ -79,20 +80,20 @@ To run individual tests with tox::
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 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/

View File

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

24
tox.ini
View File

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