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;