diff --git a/.travis.yml b/.travis.yml index 4d6c3d4..3b6db4b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,18 +11,9 @@ notifications: email: - pytest-commit@python.org -python: -- '2.7' -- '3.4' -- '3.5' -- '3.6' -env: -- TOXENV=py-pytest30 -- TOXENV=py-pytest31 -- TOXENV=py-pytest32 -- TOXENV=py-pytest33 - -install: pip install tox setuptools_scm +install: + - pip install -U pip + - pip install tox setuptools_scm script: tox stages: @@ -42,7 +33,14 @@ jobs: env: TOXENV=py27-pytestlatest - stage: test - # python x env above are already included into this stage + python: "3.4" + env: TOXENV=py34-pytestlatest + - python: "3.5" + env: TOXENV=py35-pytestlatest + - python: "3.7" + env: TOXENV=py37-pytestlatest + sudo: required + dist: xenial - python: "2.7" env: TOXENV=py27-pytestmaster - python: "2.7" diff --git a/appveyor.yml b/appveyor.yml index 290ac16..fd97770 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,21 +1,23 @@ environment: matrix: - # note: please use "tox --listenvs" to populate the build matrix - - TOXENV: "py27-pytest33" - - TOXENV: "py34-pytest33" - - TOXENV: "py35-pytest33" - - TOXENV: "py36-pytest33" + - TOXENV: "py27-pytestlatest" + - TOXENV: "py34-pytestlatest" + - TOXENV: "py35-pytestlatest" - TOXENV: "py36-pytestlatest" - - TOXENV: "py27-pytest33-pexpect" - - TOXENV: "py36-pytest33-pexpect" + - TOXENV: "py37-pytestlatest" + - TOXENV: "py27-pytestmaster" + - TOXENV: "py36-pytestmaster" + - TOXENV: "py27-pytestfeatures" + - TOXENV: "py36-pytestfeatures" install: - - C:\Python36\python -m pip install -U tox setuptools_scm pip + - C:\Python37\python -m pip install -U pip + - C:\Python37\python -m pip install -U tox setuptools_scm build: false # Not a C# project, build stuff at the test step instead. test_script: - - C:\Python36\python -m tox + - C:\Python37\python -m tox # We don't deploy anything on tags with AppVeyor, we use Travis instead, so we # might as well save resources diff --git a/changelog/372.removal.rst b/changelog/372.removal.rst new file mode 100644 index 0000000..ea14c5b --- /dev/null +++ b/changelog/372.removal.rst @@ -0,0 +1 @@ +Pytest versions older than 3.6 are no longer supported. diff --git a/setup.py b/setup.py index fcd2961..b830492 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import setup, find_packages -install_requires = ["execnet>=1.1", "pytest>=3.0.0", "pytest-forked", "six"] +install_requires = ["execnet>=1.1", "pytest>=3.6.0", "pytest-forked", "six"] setup( @@ -40,5 +40,6 @@ setup( "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", ], ) diff --git a/testing/acceptance_test.py b/testing/acceptance_test.py index deb3c1d..be4c7d8 100644 --- a/testing/acceptance_test.py +++ b/testing/acceptance_test.py @@ -708,16 +708,6 @@ def test_sub_plugins_disabled(testdir, plugin): class TestWarnings: - @pytest.fixture(autouse=True) - def skip_if_unsupported_pytest_version(self): - """Skip tests of this class if we are running in a pytest version which does not - support warnings yet. - """ - from pkg_resources import parse_version - - if parse_version(pytest.__version__) < parse_version("3.1"): - pytest.skip("pytest warnings requires >= 3.1") - @pytest.mark.parametrize("n", ["-n0", "-n1"]) @pytest.mark.parametrize("warn_type", ["pytest", "builtin"]) def test_warnings(self, testdir, n, warn_type): diff --git a/testing/test_looponfail.py b/testing/test_looponfail.py index a534754..94fccd7 100644 --- a/testing/test_looponfail.py +++ b/testing/test_looponfail.py @@ -1,4 +1,7 @@ import py +import pytest +from pkg_resources import parse_version + from xdist.looponfail import RemoteControl from xdist.looponfail import StatRecorder @@ -214,7 +217,11 @@ class TestLooponFailing: assert "test_one" not in remotecontrol.failures[0] assert "test_two" in remotecontrol.failures[0] - @py.test.mark.xfail(py.test.__version__ >= "3.1", reason="broken by pytest 3.1+") + @pytest.mark.xfail( + parse_version(pytest.__version__) >= parse_version("3.1"), + reason="broken by pytest 3.1+", + strict=True, + ) def test_looponfail_removed_test(self, testdir): modcol = testdir.getmodulecol( """ diff --git a/testing/test_remote.py b/testing/test_remote.py index 05e4380..dd6ee87 100644 --- a/testing/test_remote.py +++ b/testing/test_remote.py @@ -1,7 +1,6 @@ import py import pprint import pytest -from pkg_resources import parse_version from xdist.workermanage import WorkerController, unserialize_report from xdist.remote import serialize_report @@ -294,10 +293,6 @@ class TestWorkerInteractor: ev = worker.popevent("workerfinished") assert "workeroutput" in ev.kwargs - @pytest.mark.skipif( - parse_version(pytest.__version__) < parse_version("3.3"), - reason="skip at module level illegal in this pytest version", - ) def test_remote_collect_skip(self, worker): worker.testdir.makepyfile( """ diff --git a/tox.ini b/tox.ini index c3ba7b6..1622180 100644 --- a/tox.ini +++ b/tox.ini @@ -1,30 +1,17 @@ [tox] -# if you change the envlist, please update .travis.yml file as well envlist= linting - py{27,34,35,36}-pytest{30,31,32,33,latest} - py{27,36}-pytest36-pexpect + py{27,34,35,36,37}-pytestlatest py{27,36}-pytest{master,features} - [testenv] changedir=testing passenv = USER USERNAME deps = - pycmd - # to avoid .eggs - setuptools_scm - pytest30: pytest~=3.0.5 - pytest31: pytest~=3.1.0 - pytest32: pytest~=3.2.0 - pytest33: pytest~=3.3.0 pytestlatest: pytest pytestmaster: git+https://github.com/pytest-dev/pytest.git@master pytestfeatures: git+https://github.com/pytest-dev/pytest.git@features - pexpect: pexpect filelock -platform= - pexpect: linux|darwin commands= pytest {posargs} @@ -48,7 +35,7 @@ commands = towncrier --version {posargs} --yes [pytest] -addopts = -rsfxX +addopts = -ra [flake8] max-line-length = 120