2010-07-05 21:55:21 +08:00
|
|
|
[tox]
|
2019-02-09 01:50:33 +08:00
|
|
|
isolated_build = True
|
2019-02-10 20:57:44 +08:00
|
|
|
minversion = 3.5.3
|
2017-07-17 07:27:37 +08:00
|
|
|
distshare = {homedir}/.tox/distshare
|
2017-09-02 05:33:30 +08:00
|
|
|
# make sure to update environment list in travis.yml and appveyor.yml
|
2017-07-17 07:27:37 +08:00
|
|
|
envlist =
|
|
|
|
linting
|
|
|
|
py35
|
|
|
|
py36
|
|
|
|
py37
|
2019-02-06 23:11:00 +08:00
|
|
|
py38
|
2020-05-07 20:26:55 +08:00
|
|
|
py39
|
2019-02-14 04:59:36 +08:00
|
|
|
pypy3
|
2020-05-01 23:56:06 +08:00
|
|
|
py37-{pexpect,xdist,unittestextras,numpy,pluggymaster}
|
2017-07-17 07:27:37 +08:00
|
|
|
doctesting
|
2018-11-12 04:45:34 +08:00
|
|
|
py37-freeze
|
2017-07-17 07:27:37 +08:00
|
|
|
docs
|
2019-07-13 22:06:56 +08:00
|
|
|
docs-checklinks
|
2010-07-05 21:55:21 +08:00
|
|
|
|
2010-07-02 21:26:03 +08:00
|
|
|
[testenv]
|
2017-09-27 06:46:50 +08:00
|
|
|
commands =
|
2019-02-27 20:10:42 +08:00
|
|
|
{env:_PYTEST_TOX_COVERAGE_RUN:} pytest {posargs:{env:_PYTEST_TOX_DEFAULT_POSARGS:}}
|
2020-01-22 20:31:51 +08:00
|
|
|
doctesting: {env:_PYTEST_TOX_COVERAGE_RUN:} pytest --doctest-modules --pyargs _pytest
|
2018-09-17 18:41:06 +08:00
|
|
|
coverage: coverage combine
|
2019-06-09 17:54:29 +08:00
|
|
|
coverage: coverage report -m
|
2019-10-19 04:10:30 +08:00
|
|
|
passenv = USER USERNAME COVERAGE_* TRAVIS PYTEST_ADDOPTS TERM
|
2017-09-27 06:46:50 +08:00
|
|
|
setenv =
|
2020-01-22 20:31:51 +08:00
|
|
|
_PYTEST_TOX_DEFAULT_POSARGS={env:_PYTEST_TOX_POSARGS_DOCTESTING:} {env:_PYTEST_TOX_POSARGS_LSOF:} {env:_PYTEST_TOX_POSARGS_XDIST:}
|
2019-02-27 16:15:04 +08:00
|
|
|
|
2020-01-08 07:03:38 +08:00
|
|
|
# Configuration to run with coverage similar to CI, e.g.
|
2019-02-10 21:02:56 +08:00
|
|
|
# "tox -e py37-coverage".
|
2018-08-30 02:05:31 +08:00
|
|
|
coverage: _PYTEST_TOX_COVERAGE_RUN=coverage run -m
|
|
|
|
coverage: _PYTEST_TOX_EXTRA_DEP=coverage-enable-subprocess
|
2017-09-27 06:46:50 +08:00
|
|
|
coverage: COVERAGE_FILE={toxinidir}/.coverage
|
|
|
|
coverage: COVERAGE_PROCESS_START={toxinidir}/.coveragerc
|
2019-02-27 16:15:04 +08:00
|
|
|
|
2020-01-22 20:31:51 +08:00
|
|
|
doctesting: _PYTEST_TOX_POSARGS_DOCTESTING=doc/en
|
|
|
|
|
2019-03-01 05:44:24 +08:00
|
|
|
nobyte: PYTHONDONTWRITEBYTECODE=1
|
|
|
|
|
2019-02-27 20:10:42 +08:00
|
|
|
lsof: _PYTEST_TOX_POSARGS_LSOF=--lsof
|
|
|
|
|
|
|
|
xdist: _PYTEST_TOX_POSARGS_XDIST=-n auto
|
2018-11-18 08:15:54 +08:00
|
|
|
extras = testing
|
2017-07-17 07:27:37 +08:00
|
|
|
deps =
|
2020-01-22 20:31:51 +08:00
|
|
|
doctesting: PyYAML
|
2019-10-06 22:00:54 +08:00
|
|
|
oldattrs: attrs==17.4.0
|
|
|
|
oldattrs: hypothesis<=4.38.1
|
2019-03-01 05:44:24 +08:00
|
|
|
numpy: numpy
|
2019-02-27 16:15:04 +08:00
|
|
|
pexpect: pexpect
|
2019-03-03 20:12:03 +08:00
|
|
|
pluggymaster: git+https://github.com/pytest-dev/pluggy.git@master
|
2020-02-12 19:32:37 +08:00
|
|
|
pygments
|
2020-05-01 23:56:06 +08:00
|
|
|
unittestextras: twisted
|
|
|
|
unittestextras: asynctest
|
2019-02-09 06:53:19 +08:00
|
|
|
xdist: pytest-xdist>=1.13
|
2017-09-27 06:46:50 +08:00
|
|
|
{env:_PYTEST_TOX_EXTRA_DEP:}
|
2010-10-10 19:48:49 +08:00
|
|
|
|
2016-01-06 04:14:57 +08:00
|
|
|
[testenv:linting]
|
2018-08-26 07:48:01 +08:00
|
|
|
skip_install = True
|
2018-11-13 00:03:04 +08:00
|
|
|
basepython = python3
|
2018-09-08 00:32:36 +08:00
|
|
|
deps = pre-commit>=1.11.0
|
2020-01-13 03:09:51 +08:00
|
|
|
commands = pre-commit run --all-files --show-diff-on-failure {posargs:}
|
2013-10-12 21:39:22 +08:00
|
|
|
|
2020-01-13 03:12:35 +08:00
|
|
|
[testenv:mypy]
|
|
|
|
extras = checkqa-mypy, testing
|
|
|
|
commands = mypy {posargs:src testing}
|
|
|
|
|
2020-01-17 13:26:53 +08:00
|
|
|
[testenv:mypy-diff]
|
|
|
|
extras = checkqa-mypy, testing
|
|
|
|
deps =
|
|
|
|
lxml
|
|
|
|
diff-cover
|
|
|
|
commands =
|
|
|
|
-mypy --cobertura-xml-report {envtmpdir} {posargs:src testing}
|
|
|
|
diff-cover --fail-under=100 --compare-branch={env:DIFF_BRANCH:origin/{env:GITHUB_BASE_REF:master}} {envtmpdir}/cobertura.xml
|
|
|
|
|
2016-08-23 10:35:41 +08:00
|
|
|
[testenv:docs]
|
2018-12-20 04:12:12 +08:00
|
|
|
basepython = python3
|
2019-05-07 06:42:06 +08:00
|
|
|
usedevelop = True
|
2019-11-25 11:06:30 +08:00
|
|
|
deps =
|
|
|
|
-r{toxinidir}/doc/en/requirements.txt
|
|
|
|
towncrier
|
|
|
|
whitelist_externals = sh
|
2017-07-17 07:27:37 +08:00
|
|
|
commands =
|
2019-11-25 11:06:30 +08:00
|
|
|
sh -c 'towncrier --draft > doc/en/_changelog_towncrier_draft.rst'
|
|
|
|
# the '-t changelog_towncrier_draft' tags makes sphinx include the draft
|
|
|
|
# changelog in the docs; this does not happen on ReadTheDocs because it uses
|
|
|
|
# the standard sphinx command so the 'changelog_towncrier_draft' is never set there
|
2020-02-29 07:47:30 +08:00
|
|
|
sphinx-build -W --keep-going -b html doc/en doc/en/_build/html -t changelog_towncrier_draft {posargs:}
|
2010-10-10 19:48:49 +08:00
|
|
|
|
2019-07-13 22:06:56 +08:00
|
|
|
[testenv:docs-checklinks]
|
|
|
|
basepython = python3
|
|
|
|
usedevelop = True
|
|
|
|
changedir = doc/en
|
|
|
|
deps = -r{toxinidir}/doc/en/requirements.txt
|
|
|
|
commands =
|
2019-08-28 03:00:48 +08:00
|
|
|
sphinx-build -W -q --keep-going -b linkcheck . _build
|
2019-07-13 22:06:56 +08:00
|
|
|
|
2012-10-07 19:06:17 +08:00
|
|
|
[testenv:regen]
|
2017-07-17 07:27:37 +08:00
|
|
|
changedir = doc/en
|
|
|
|
skipsdist = True
|
2019-09-28 22:20:54 +08:00
|
|
|
basepython = python3
|
2017-07-17 07:27:37 +08:00
|
|
|
deps =
|
2019-11-25 11:06:30 +08:00
|
|
|
dataclasses
|
2017-07-17 07:27:37 +08:00
|
|
|
PyYAML
|
|
|
|
regendoc>=0.6.1
|
2019-11-25 11:06:30 +08:00
|
|
|
sphinx
|
2017-07-17 07:27:37 +08:00
|
|
|
whitelist_externals =
|
2015-09-22 20:02:11 +08:00
|
|
|
rm
|
|
|
|
make
|
2017-07-17 07:27:37 +08:00
|
|
|
commands =
|
2019-01-06 23:49:40 +08:00
|
|
|
# don't show hypothesis plugin info in docs, see #4602
|
|
|
|
pip uninstall hypothesis -y
|
2012-10-18 21:06:55 +08:00
|
|
|
rm -rf /tmp/doc-exec*
|
2019-04-04 01:50:57 +08:00
|
|
|
rm -rf {envdir}/.pytest_cache
|
2012-10-07 19:06:17 +08:00
|
|
|
make regen
|
|
|
|
|
2018-11-12 04:45:34 +08:00
|
|
|
[testenv:py37-freeze]
|
2017-07-17 07:27:37 +08:00
|
|
|
changedir = testing/freeze
|
2017-09-27 06:46:50 +08:00
|
|
|
deps =
|
|
|
|
pyinstaller
|
2017-07-17 07:27:37 +08:00
|
|
|
commands =
|
2016-07-27 08:29:07 +08:00
|
|
|
{envpython} create_executable.py
|
2014-07-31 08:50:00 +08:00
|
|
|
{envpython} tox_run.py
|
2015-07-19 21:49:43 +08:00
|
|
|
|
2018-07-14 21:21:31 +08:00
|
|
|
[testenv:release]
|
|
|
|
decription = do a release, required posarg of the version number
|
2019-09-28 22:20:54 +08:00
|
|
|
basepython = python3
|
2019-05-07 06:42:06 +08:00
|
|
|
usedevelop = True
|
2018-07-14 21:21:31 +08:00
|
|
|
passenv = *
|
|
|
|
deps =
|
|
|
|
colorama
|
2020-03-02 01:46:35 +08:00
|
|
|
github3.py
|
2018-09-08 00:32:36 +08:00
|
|
|
pre-commit>=1.11.0
|
2018-07-14 21:21:31 +08:00
|
|
|
wheel
|
2019-11-25 11:06:30 +08:00
|
|
|
towncrier
|
2018-07-14 21:21:31 +08:00
|
|
|
commands = python scripts/release.py {posargs}
|
|
|
|
|
2020-03-02 01:46:35 +08:00
|
|
|
[testenv:release-on-comment]
|
|
|
|
decription = do a release from a comment on GitHub
|
|
|
|
usedevelop = {[testenv:release]usedevelop}
|
|
|
|
passenv = {[testenv:release]passenv}
|
|
|
|
deps = {[testenv:release]deps}
|
|
|
|
commands = python scripts/release-on-comment.py {posargs}
|
|
|
|
|
2019-12-20 19:54:44 +08:00
|
|
|
[testenv:publish-gh-release-notes]
|
2019-08-10 22:03:36 +08:00
|
|
|
description = create GitHub release after deployment
|
2019-09-28 22:20:54 +08:00
|
|
|
basepython = python3
|
2019-08-10 22:03:36 +08:00
|
|
|
usedevelop = True
|
2020-01-15 07:34:12 +08:00
|
|
|
passenv = GH_RELEASE_NOTES_TOKEN GITHUB_REF GITHUB_REPOSITORY
|
2019-08-10 22:03:36 +08:00
|
|
|
deps =
|
|
|
|
github3.py
|
|
|
|
pypandoc
|
2019-12-20 19:54:44 +08:00
|
|
|
commands = python scripts/publish-gh-release-notes.py {posargs}
|
2019-08-10 22:03:36 +08:00
|
|
|
|
|
|
|
|
2010-10-28 01:35:27 +08:00
|
|
|
[pytest]
|
2017-07-17 07:27:37 +08:00
|
|
|
minversion = 2.0
|
2020-01-31 07:16:41 +08:00
|
|
|
addopts = -rfEX -p pytester --strict-markers
|
2018-09-19 22:58:05 +08:00
|
|
|
rsyncdirs = tox.ini doc src testing
|
2017-07-17 07:27:37 +08:00
|
|
|
python_files = test_*.py *_test.py testing/*/*.py
|
|
|
|
python_classes = Test Acceptance
|
|
|
|
python_functions = test
|
2018-10-14 20:47:40 +08:00
|
|
|
# NOTE: "doc" is not included here, but gets tested explicitly via "doctesting".
|
|
|
|
testpaths = testing
|
2018-09-19 22:58:05 +08:00
|
|
|
norecursedirs = testing/example_scripts
|
2017-09-06 06:57:01 +08:00
|
|
|
xfail_strict=true
|
2017-07-17 07:27:37 +08:00
|
|
|
filterwarnings =
|
2017-07-21 10:11:14 +08:00
|
|
|
error
|
2019-07-06 07:16:12 +08:00
|
|
|
default:Using or importing the ABCs:DeprecationWarning:unittest2.*
|
filterwarnings: ignore DeprecationWarning from nose
This comes via hypothesis:
```
% COLUMNS=80 p testing/python/metafunc.py::TestMetafunc::test_idval_hypothesis -vv --tb=short
============================= test session starts ==============================
platform linux -- Python 3.7.4, pytest-3.1.4.dev721+g3367bf03b.d20191112, py-1.8.1.dev11+g34f716fe, pluggy-0.13.1.dev8+ga5130ac.d20191103 -- …/Vcs/pytest/.venv/bin/python
cachedir: .pytest_cache
hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase('…/Vcs/pytest/.hypothesis/examples')
rootdir: …/Vcs/pytest, inifile: tox.ini
plugins: forked-1.1.3, hypothesis-4.44.1, cov-2.8.1, coverage-pytest-plugin-0.1, enhancements-0.0.5.dev1-gf361636-dirty, xdist-1.30.0
collected 1 item
testing/python/metafunc.py::TestMetafunc::test_idval_hypothesis FAILED [100%]
=================================== FAILURES ===================================
______________________ TestMetafunc.test_idval_hypothesis ______________________
.venv/lib/python3.7/site-packages/hypothesis/core.py:588: in evaluate_test_data
result = self.execute(data)
.venv/lib/python3.7/site-packages/hypothesis/core.py:553: in execute
result = self.test_runner(data, run)
.venv/lib/python3.7/site-packages/hypothesis/executors.py:56: in default_new_style_executor
return function(data)
.venv/lib/python3.7/site-packages/hypothesis/core.py:536: in run
args, kwargs = data.draw(self.search_strategy)
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:857: in draw
return strategy.do_draw(self)
.venv/lib/python3.7/site-packages/hypothesis/core.py:223: in do_draw
return self.mapped_strategy.do_draw(data)
.venv/lib/python3.7/site-packages/hypothesis/searchstrategy/collections.py:60: in do_draw
return tuple(data.draw(e) for e in self.element_strategies)
.venv/lib/python3.7/site-packages/hypothesis/searchstrategy/collections.py:60: in <genexpr>
return tuple(data.draw(e) for e in self.element_strategies)
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:852: in draw
return strategy.do_draw(self)
.venv/lib/python3.7/site-packages/hypothesis/searchstrategy/strategies.py:570: in do_draw
result = self.pack(data.draw(self.mapped_strategy))
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:852: in draw
return strategy.do_draw(self)
.venv/lib/python3.7/site-packages/hypothesis/searchstrategy/lazy.py:156: in do_draw
return data.draw(self.wrapped_strategy)
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:852: in draw
return strategy.do_draw(self)
.venv/lib/python3.7/site-packages/hypothesis/searchstrategy/strategies.py:570: in do_draw
result = self.pack(data.draw(self.mapped_strategy))
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:852: in draw
return strategy.do_draw(self)
.venv/lib/python3.7/site-packages/hypothesis/searchstrategy/collections.py:60: in do_draw
return tuple(data.draw(e) for e in self.element_strategies)
.venv/lib/python3.7/site-packages/hypothesis/searchstrategy/collections.py:60: in <genexpr>
return tuple(data.draw(e) for e in self.element_strategies)
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:852: in draw
return strategy.do_draw(self)
.venv/lib/python3.7/site-packages/hypothesis/searchstrategy/strategies.py:508: in do_draw
return data.draw(self.element_strategies[i], label=self.branch_labels[i])
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:852: in draw
return strategy.do_draw(self)
.venv/lib/python3.7/site-packages/hypothesis/searchstrategy/lazy.py:156: in do_draw
return data.draw(self.wrapped_strategy)
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:852: in draw
return strategy.do_draw(self)
.venv/lib/python3.7/site-packages/hypothesis/searchstrategy/strategies.py:570: in do_draw
result = self.pack(data.draw(self.mapped_strategy))
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:852: in draw
return strategy.do_draw(self)
.venv/lib/python3.7/site-packages/hypothesis/searchstrategy/lazy.py:156: in do_draw
return data.draw(self.wrapped_strategy)
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:852: in draw
return strategy.do_draw(self)
.venv/lib/python3.7/site-packages/hypothesis/searchstrategy/collections.py:120: in do_draw
result.append(data.draw(self.element_strategy))
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:852: in draw
return strategy.do_draw(self)
.venv/lib/python3.7/site-packages/hypothesis/searchstrategy/numbers.py:62: in do_draw
return d.integer_range(data, self.start, self.end)
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/utils.py:105: in integer_range
probe = data.draw_bits(bits)
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:974: in draw_bits
self.__check_capacity(n_bytes)
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:1019: in __check_capacity
self.mark_overrun()
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:1036: in mark_overrun
self.conclude_test(Status.OVERRUN)
.venv/lib/python3.7/site-packages/hypothesis/internal/conjecture/data.py:1027: in conclude_test
raise StopTest(self.testcounter)
E hypothesis.errors.StopTest: 0
During handling of the above exception, another exception occurred:
testing/python/metafunc.py:195: in test_idval_hypothesis
@hypothesis.settings(
.venv/lib/python3.7/site-packages/nose/__init__.py:1: in <module>
from nose.core import collector, main, run, run_exit, runmodule
.venv/lib/python3.7/site-packages/nose/core.py:12: in <module>
from nose.loader import defaultTestLoader
.venv/lib/python3.7/site-packages/nose/loader.py:21: in <module>
from nose.importer import Importer, add_path, remove_path
.venv/lib/python3.7/site-packages/nose/importer.py:12: in <module>
from imp import find_module, load_module, acquire_model1, release_model1
/usr/lib/python3.7/imp.py:33: in <module>
DeprecationWarning, stacklevel=2)
E DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
---------------------------------- Hypothesis ----------------------------------
You can add @seed(198901559535749756451579900660745168041) to this test or run pytest with --hypothesis-seed=198901559535749756451579900660745168041 to reproduce this failure.
=============================== warnings summary ===============================
testing/python/metafunc.py::TestMetafunc::test_idval_hypothesis
…/Vcs/pytest/.venv/lib/python3.7/site-packages/unittest2/compatibility.py:143: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
class ChainMap(collections.MutableMapping):
-- Docs: https://docs.pytest.org/en/latest/warnings.html
=========================== short test summary info ============================
FAILED testing/python/metafunc.py::TestMetafunc::test_idval_hypothesis - Depr...
```
2019-11-12 21:29:50 +08:00
|
|
|
default:the imp module is deprecated in favour of importlib:DeprecationWarning:nose.*
|
2018-09-04 00:14:57 +08:00
|
|
|
ignore:Module already imported so cannot be rewritten:pytest.PytestWarning
|
2019-07-20 07:51:01 +08:00
|
|
|
# produced by python3.6/site.py itself (3.6.7 on Travis, could not trigger it with 3.6.8).
|
|
|
|
ignore:.*U.*mode is deprecated:DeprecationWarning:(?!(pytest|_pytest))
|
2017-07-17 07:27:37 +08:00
|
|
|
# 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
|
2018-09-04 21:48:11 +08:00
|
|
|
# pytest's own futurewarnings
|
2018-09-04 22:15:39 +08:00
|
|
|
ignore::pytest.PytestExperimentalApiWarning
|
2018-11-17 18:49:04 +08:00
|
|
|
# Do not cause SyntaxError for invalid escape sequences in py37.
|
2019-07-20 07:22:40 +08:00
|
|
|
# Those are caught/handled by pyupgrade, and not easy to filter with the
|
|
|
|
# module being the filename (with .py removed).
|
2018-11-17 18:49:04 +08:00
|
|
|
default:invalid escape sequence:DeprecationWarning
|
2019-04-01 09:38:33 +08:00
|
|
|
# ignore use of unregistered marks, because we use many to test the implementation
|
2019-04-28 21:06:01 +08:00
|
|
|
ignore::_pytest.warning_types.PytestUnknownMarkWarning
|
2018-06-27 04:48:33 +08:00
|
|
|
pytester_example_dir = testing/example_scripts
|
2019-03-31 11:22:30 +08:00
|
|
|
markers =
|
2019-04-27 22:43:36 +08:00
|
|
|
# dummy markers for testing
|
|
|
|
foo
|
|
|
|
bar
|
|
|
|
baz
|
|
|
|
# conftest.py reorders tests moving slow ones to the end of the list
|
2019-04-08 01:08:59 +08:00
|
|
|
slow
|
2019-05-27 09:20:58 +08:00
|
|
|
# experimental mark for all tests using pexpect
|
|
|
|
uses_pexpect
|
2019-03-01 21:24:09 +08:00
|
|
|
|
2015-07-24 16:05:54 +08:00
|
|
|
[flake8]
|
2017-07-17 07:27:37 +08:00
|
|
|
max-line-length = 120
|
2019-07-14 16:12:47 +08:00
|
|
|
extend-ignore = E203
|
2019-03-01 21:24:09 +08:00
|
|
|
|
|
|
|
[isort]
|
|
|
|
; This config mimics what reorder-python-imports does.
|
|
|
|
force_single_line = 1
|
|
|
|
known_localfolder = pytest,_pytest
|
|
|
|
known_third_party = test_source,test_excinfo
|
|
|
|
force_alphabetical_sort_within_sections = 1
|