[tox] minversion = 2.0 distshare = {homedir}/.tox/distshare # make sure to update environment list in travis.yml and appveyor.yml envlist = linting py27 py34 py35 py36 py37 pypy {py27,py37}-{pexpect,xdist,trial,numpy,pluggymaster} py27-nobyte doctesting py37-freeze docs [testenv] commands = {env:_PYTEST_TOX_COVERAGE_RUN:} pytest --lsof {posargs} coverage: coverage combine coverage: coverage report passenv = USER USERNAME COVERAGE_* TRAVIS setenv = # configuration if a user runs tox with a "coverage" factor, for example "tox -e py37-coverage" coverage: _PYTEST_TOX_COVERAGE_RUN=coverage run -m coverage: _PYTEST_TOX_EXTRA_DEP=coverage-enable-subprocess coverage: COVERAGE_FILE={toxinidir}/.coverage coverage: COVERAGE_PROCESS_START={toxinidir}/.coveragerc extras = testing deps = {env:_PYTEST_TOX_EXTRA_DEP:} [testenv:py27-subprocess] deps = pytest-xdist>=1.13 py27: mock nose commands = pytest -n auto --runpytest=subprocess {posargs} [testenv:linting] skip_install = True basepython = python3 deps = pre-commit>=1.11.0 commands = pre-commit run --all-files --show-diff-on-failure [testenv:py27-xdist] extras = testing deps = pytest-xdist>=1.13 {env:_PYTEST_TOX_EXTRA_DEP:} commands = {env:_PYTEST_TOX_COVERAGE_RUN:} pytest -n auto {posargs} [testenv:py37-xdist] # NOTE: copied from above due to https://github.com/tox-dev/tox/issues/706. extras = testing deps = pytest-xdist>=1.13 {env:_PYTEST_TOX_EXTRA_DEP:} commands = {[testenv:py27-xdist]commands} [testenv:py27-pexpect] platform = linux|darwin deps = pexpect {env:_PYTEST_TOX_EXTRA_DEP:} commands = {env:_PYTEST_TOX_COVERAGE_RUN:} pytest {posargs:testing/test_pdb.py testing/test_terminal.py testing/test_unittest.py} [testenv:py37-pexpect] platform = {[testenv:py27-pexpect]platform} deps = {[testenv:py27-pexpect]deps} commands = {[testenv:py27-pexpect]commands} [testenv:py27-nobyte] extras = testing deps = pytest-xdist>=1.13 {env:_PYTEST_TOX_EXTRA_DEP:} distribute = true setenv = {[testenv]setenv} PYTHONDONTWRITEBYTECODE=1 commands = {env:_PYTEST_TOX_COVERAGE_RUN:} pytest -n auto {posargs} [testenv:py27-trial] deps = twisted {env:_PYTEST_TOX_EXTRA_DEP:} commands = {env:_PYTEST_TOX_COVERAGE_RUN:} pytest {posargs:testing/test_unittest.py} [testenv:py37-trial] deps = {[testenv:py27-trial]deps} commands = {[testenv:py27-trial]commands} [testenv:py27-numpy] deps = numpy {env:_PYTEST_TOX_EXTRA_DEP:} commands= {env:_PYTEST_TOX_COVERAGE_RUN:} pytest {posargs:testing/python/approx.py} [testenv:py37-numpy] deps = {[testenv:py27-numpy]deps} commands = {[testenv:py27-numpy]commands} [testenv:py27-pluggymaster] setenv= {[testenv]setenv} _PYTEST_SETUP_SKIP_PLUGGY_DEP=1 # NOTE: using env instead of "{[testenv]deps}", because of https://github.com/tox-dev/tox/issues/706. _PYTEST_TOX_EXTRA_DEP=git+https://github.com/pytest-dev/pluggy.git@master [testenv:py37-pluggymaster] setenv = {[testenv:py27-pluggymaster]setenv} [testenv:docs] skipsdist = True usedevelop = True changedir = doc/en deps = -r{toxinidir}/doc/en/requirements.txt commands = sphinx-build -W -b html . _build [testenv:doctesting] basepython = python3 skipsdist = True deps = PyYAML {env:_PYTEST_TOX_EXTRA_DEP:} commands = {env:_PYTEST_TOX_COVERAGE_RUN:} pytest doc/en {env:_PYTEST_TOX_COVERAGE_RUN:} pytest --doctest-modules --pyargs _pytest [testenv:regen] changedir = doc/en skipsdist = True basepython = python3.6 deps = sphinx PyYAML regendoc>=0.6.1 whitelist_externals = rm make commands = rm -rf /tmp/doc-exec* make regen [testenv:jython] changedir = testing commands = {envpython} {envbindir}/py.test-jython {posargs} [testenv:py37-freeze] changedir = testing/freeze deps = pyinstaller commands = {envpython} create_executable.py {envpython} tox_run.py [testenv:release] decription = do a release, required posarg of the version number basepython = python3.6 skipsdist = True usedevelop = True passenv = * deps = colorama gitpython pre-commit>=1.11.0 towncrier wheel commands = python scripts/release.py {posargs} [pytest] minversion = 2.0 addopts = -ra -p pytester rsyncdirs = tox.ini doc src testing python_files = test_*.py *_test.py testing/*/*.py python_classes = Test Acceptance python_functions = test # NOTE: "doc" is not included here, but gets tested explicitly via "doctesting". testpaths = testing norecursedirs = testing/example_scripts xfail_strict=true filterwarnings = error ignore:yield tests are deprecated, and scheduled to be removed in pytest 4.0:pytest.RemovedInPytest4Warning ignore:Metafunc.addcall is deprecated and scheduled to be removed in pytest 4.0:pytest.RemovedInPytest4Warning ignore::pytest.RemovedInPytest4Warning ignore:Module already imported so cannot be rewritten:pytest.PytestWarning # produced by path.local ignore:bad escape.*:DeprecationWarning:re # produced by path.readlines ignore:.*U.*mode is deprecated:DeprecationWarning # produced by pytest-xdist ignore:.*type argument to addoption.*:DeprecationWarning # produced by python >=3.5 on execnet (pytest-xdist) ignore:.*inspect.getargspec.*deprecated, use inspect.signature.*:DeprecationWarning # pytest's own futurewarnings ignore::pytest.PytestExperimentalApiWarning # Do not cause SyntaxError for invalid escape sequences in py37. default:invalid escape sequence:DeprecationWarning pytester_example_dir = testing/example_scripts [flake8] max-line-length = 120 ignore = E203,W503