Switch from tox to nox
Recent tox releases have put us on a config treadmill. Avoid these issues entirely by using nox. Nox is a tox alternative that uses standard tools like pip and should be simpler to use for us. Change-Id: Ie79845bbed7ca1254aec466bd5219186fefcdac9
This commit is contained in:
parent
f02b41df74
commit
12a0aca425
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,6 +8,7 @@ ChangeLog
|
||||
.gerrit
|
||||
.testrepository
|
||||
.tox
|
||||
.nox
|
||||
.venv
|
||||
*.egg
|
||||
*.egg-info
|
||||
|
14
.zuul.yaml
14
.zuul.yaml
@ -2,18 +2,18 @@
|
||||
vars:
|
||||
release_python: python3
|
||||
templates:
|
||||
- publish-opendev-tox-docs
|
||||
- publish-opendev-nox-docs
|
||||
check:
|
||||
jobs: &jobs
|
||||
- build-python-release
|
||||
- tox-linters
|
||||
- tox-py36:
|
||||
- nox-linters
|
||||
- nox-py36:
|
||||
nodeset: ubuntu-bionic
|
||||
- tox-py37:
|
||||
- nox-py37:
|
||||
nodeset: ubuntu-bionic
|
||||
- tox-py38:
|
||||
- nox-py38:
|
||||
nodeset: ubuntu-focal
|
||||
- tox-py39:
|
||||
- nox-py39:
|
||||
nodeset: ubuntu-focal
|
||||
gate:
|
||||
jobs: *jobs
|
||||
@ -23,4 +23,4 @@
|
||||
release:
|
||||
jobs:
|
||||
- opendev-release-python
|
||||
- opendev-publish-unversioned-tox-docs
|
||||
- opendev-publish-unversioned-nox-docs
|
||||
|
@ -20,13 +20,13 @@ tools, or review ``bindep.txt`` by hand.
|
||||
Running Tests
|
||||
-------------
|
||||
|
||||
The testing system is based on a combination of tox and testr. The canonical
|
||||
approach to running tests is to simply run the command `tox`. This will
|
||||
The testing system is based on a combination of nox and testr. The canonical
|
||||
approach to running tests is to simply run the command `nox`. This will
|
||||
create virtual environments, populate them with dependencies and run all of
|
||||
the tests that OpenStack CI systems run. Behind the scenes, tox is running
|
||||
`testr run --parallel`, but is set up such that you can supply any additional
|
||||
testr arguments that are needed to tox. For example, you can run:
|
||||
`tox -- --analyze-isolation` to cause tox to tell testr to add
|
||||
the tests that OpenStack CI systems run. Behind the scenes, nox is running
|
||||
`stestr run`, but is set up such that you can supply any additional
|
||||
stestr arguments that are needed to nox. For example, you can run:
|
||||
`nox -s tests -- --analyze-isolation` to cause nox to tell testr to add
|
||||
--analyze-isolation to its argument list.
|
||||
|
||||
It is also possible to run the tests inside of a virtual environment
|
||||
@ -38,7 +38,6 @@ test-requirements.txt. Installing them via pip, for instance, is simply::
|
||||
pip install -r requirements.txt -r test-requirements.txt
|
||||
|
||||
In you go this route, you can interact with the testr command directly.
|
||||
Running `testr run` will run the entire test suite. `testr run --parallel`
|
||||
will run it in parallel (this is the default incantation tox uses.) More
|
||||
information about testr can be found at:
|
||||
https://testrepository.readthedocs.io/en/latest/
|
||||
Running `stestr run` will run the entire test suite.
|
||||
More information about testr can be found at:
|
||||
https://stestr.readthedocs.io/en/latest/README.html
|
||||
|
@ -13,7 +13,7 @@ following:
|
||||
cached copy (it needs to be located in a ``.gerrit`` directory at the
|
||||
top level of the git-review project)
|
||||
|
||||
To run git-review integration tests, use tox. For example, to test against
|
||||
Python 3.7::
|
||||
To run git-review integration tests, use nox. For example, to test against
|
||||
Python 3::
|
||||
|
||||
tox -e py37
|
||||
nox -s tests
|
||||
|
58
noxfile.py
Normal file
58
noxfile.py
Normal file
@ -0,0 +1,58 @@
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import nox
|
||||
|
||||
|
||||
nox.options.error_on_external_run = True
|
||||
nox.options.reuse_existing_virtualenvs = True
|
||||
nox.options.sessions = ["tests-3", "docs", "linters"]
|
||||
|
||||
|
||||
@nox.session(python="3")
|
||||
def linters(session):
|
||||
session.install("-r", "requirements.txt")
|
||||
session.install("-r", "test-requirements.txt")
|
||||
session.install("-e", ".")
|
||||
session.run("flake8")
|
||||
|
||||
|
||||
@nox.session(python="3")
|
||||
def docs(session):
|
||||
session.install("-r", "requirements.txt")
|
||||
session.install("-r", "doc/requirements.txt")
|
||||
session.install("-e", ".")
|
||||
session.run(
|
||||
"sphinx-build", "-W",
|
||||
"-d", "doc/build/doctrees",
|
||||
"-b", "html",
|
||||
"doc/source/", "doc/build/html"
|
||||
)
|
||||
|
||||
|
||||
@nox.session(python="3")
|
||||
def venv(session):
|
||||
session.install("-r", "requirements.txt")
|
||||
session.install("-r", "test-requirements.txt")
|
||||
session.install("-e", ".")
|
||||
session.run(*session.posargs)
|
||||
|
||||
|
||||
@nox.session(python="3")
|
||||
def tests(session):
|
||||
session.install("-r", "requirements.txt")
|
||||
session.install("-r", "test-requirements.txt")
|
||||
session.install("-e", ".")
|
||||
session.run("python", "-m", "git_review.tests.check_test_id_hashes",
|
||||
"discover", "--list")
|
||||
session.run("python", "-m", "git_review.tests.prepare")
|
||||
session.run("stestr", "run", "--color", *session.posargs)
|
@ -42,3 +42,8 @@ console_scripts =
|
||||
[pbr]
|
||||
manpages =
|
||||
git-review.1
|
||||
|
||||
[flake8]
|
||||
ignore = E125,H202,H405,H904,W504
|
||||
show-source = true
|
||||
exclude = .venv,.git,.tox,.nox,dist,doc,releasenotes,*lib/python*,*egg,build
|
||||
|
42
tox.ini
42
tox.ini
@ -1,42 +0,0 @@
|
||||
[tox]
|
||||
envlist = linters,docs,py3
|
||||
ignore_basepython_conflict = true
|
||||
|
||||
[testenv]
|
||||
basepython = python3
|
||||
usedevelop = true
|
||||
# See "testing behind a proxy" https://review.opendev.org/624496
|
||||
passenv =
|
||||
http_proxy
|
||||
https_proxy
|
||||
# avoids potential slip-over of java 1.9 which breaks Gerrit, without it
|
||||
# Gerrit may start with incompatible java version.
|
||||
JAVA_HOME
|
||||
# uncomment to allow custom java options to be added
|
||||
# _JAVA_OPTIONS
|
||||
TERM
|
||||
commands =
|
||||
python -m git_review.tests.check_test_id_hashes discover --list
|
||||
python -m git_review.tests.prepare
|
||||
stestr run --color {posargs}
|
||||
deps =
|
||||
-r{toxinidir}/requirements.txt
|
||||
-r{toxinidir}/test-requirements.txt
|
||||
|
||||
[testenv:linters]
|
||||
commands = flake8
|
||||
|
||||
[testenv:docs]
|
||||
deps =
|
||||
-r{toxinidir}/requirements.txt
|
||||
-r{toxinidir}/doc/requirements.txt
|
||||
commands =
|
||||
sphinx-build -W -d doc/build/doctrees -b html doc/source/ doc/build/html
|
||||
|
||||
[testenv:venv]
|
||||
commands = {posargs}
|
||||
|
||||
[flake8]
|
||||
ignore = E125,H202,H405,H904,W504
|
||||
show-source = true
|
||||
exclude = .venv,.git,.tox,dist,doc,releasenotes,*lib/python*,*egg,build
|
Loading…
Reference in New Issue
Block a user