From 10d43bd3bfbc01a51b4b92373fe4f71da5db50b8 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Tue, 5 Sep 2017 19:57:01 -0300 Subject: [PATCH 01/13] Set xfail_strict=True in pytest's own test suite Fix #2722 --- changelog/2722.trivial | 1 + tox.ini | 1 + 2 files changed, 2 insertions(+) create mode 100644 changelog/2722.trivial diff --git a/changelog/2722.trivial b/changelog/2722.trivial new file mode 100644 index 00000000000..2c0ccd7b1fb --- /dev/null +++ b/changelog/2722.trivial @@ -0,0 +1 @@ +Set ``xfail_strict=True`` in pytest's own test suite to catch expected failures as soon as they start to pass. diff --git a/tox.ini b/tox.ini index c6ce3e73582..a989fe56f27 100644 --- a/tox.ini +++ b/tox.ini @@ -200,6 +200,7 @@ python_files = test_*.py *_test.py testing/*/*.py python_classes = Test Acceptance python_functions = test norecursedirs = .tox ja .hg cx_freeze_source +xfail_strict=true filterwarnings = error # produced by path.local From 6cf515b1648061e87bf40ec5a5cbb7f1aa543465 Mon Sep 17 00:00:00 2001 From: Evan Date: Mon, 4 Sep 2017 21:40:56 +1000 Subject: [PATCH 02/13] Fix crash in FastFilesCompleter with no prefix --- _pytest/_argcomplete.py | 5 +++-- changelog/2748.bugfix | 1 + testing/test_argcomplete.py | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 changelog/2748.bugfix diff --git a/_pytest/_argcomplete.py b/_pytest/_argcomplete.py index 1ba1ecc1e7c..965ec795136 100644 --- a/_pytest/_argcomplete.py +++ b/_pytest/_argcomplete.py @@ -78,7 +78,8 @@ def __call__(self, prefix, **kwargs): completion = [] globbed = [] if '*' not in prefix and '?' not in prefix: - if prefix[-1] == os.path.sep: # we are on unix, otherwise no bash + # we are on unix, otherwise no bash + if not prefix or prefix[-1] == os.path.sep: globbed.extend(glob(prefix + '.*')) prefix += '*' globbed.extend(glob(prefix)) @@ -98,7 +99,7 @@ def __call__(self, prefix, **kwargs): filescompleter = FastFilesCompleter() def try_argcomplete(parser): - argcomplete.autocomplete(parser) + argcomplete.autocomplete(parser, always_complete_options=False) else: def try_argcomplete(parser): pass diff --git a/changelog/2748.bugfix b/changelog/2748.bugfix new file mode 100644 index 00000000000..b5b6f583990 --- /dev/null +++ b/changelog/2748.bugfix @@ -0,0 +1 @@ +Fix crash in tab completion when no prefix is given. diff --git a/testing/test_argcomplete.py b/testing/test_argcomplete.py index b07f6e83b24..c9261257743 100644 --- a/testing/test_argcomplete.py +++ b/testing/test_argcomplete.py @@ -82,7 +82,7 @@ def test_compare_with_compgen(self): from _pytest._argcomplete import FastFilesCompleter ffc = FastFilesCompleter() fc = FilesCompleter() - for x in '/ /d /data qqq'.split(): + for x in ['/', '/d', '/data', 'qqq', '']: assert equal_with_bash(x, ffc, fc, out=py.std.sys.stdout) @pytest.mark.skipif("sys.platform in ('win32', 'darwin')") From b2a8e06e4fcad38c65d603f24b8436c4f8a385cf Mon Sep 17 00:00:00 2001 From: Joe Hamman Date: Fri, 8 Sep 2017 12:01:33 -0700 Subject: [PATCH 03/13] add warning to skipping docs re marker inheritance --- doc/en/skipping.rst | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/doc/en/skipping.rst b/doc/en/skipping.rst index 8690035a316..630f73422c8 100644 --- a/doc/en/skipping.rst +++ b/doc/en/skipping.rst @@ -54,7 +54,7 @@ by calling the ``pytest.skip(reason)`` function: if not valid_config(): pytest.skip("unsupported configuration") -The imperative method is useful when it is not possible to evaluate the skip condition +The imperative method is useful when it is not possible to evaluate the skip condition during import time. ``skipif`` @@ -73,7 +73,7 @@ when run on a Python3.3 interpreter:: ... If the condition evaluates to ``True`` during collection, the test function will be skipped, -with the specified reason appearing in the summary when using ``-rs``. +with the specified reason appearing in the summary when using ``-rs``. You can share ``skipif`` markers between modules. Consider this test module:: @@ -118,6 +118,12 @@ You can use the ``skipif`` marker (as any other marker) on classes:: If the condition is ``True``, this marker will produce a skip result for each of the test methods of that class. +.. warning:: + + The use of ``skipif`` on classes that use inheritance is strongly + discouraged. `A Known bug `_ + in pytest's markers may cause unexpected behavior in super classes. + If you want to skip all test functions of a module, you may use the ``pytestmark`` name on the global level: @@ -305,12 +311,12 @@ Running it with the report-on-xfail option gives this output:: platform linux -- Python 3.x.y, pytest-3.x.y, py-1.x.y, pluggy-0.x.y rootdir: $REGENDOC_TMPDIR/example, inifile: collected 7 items - + xfail_demo.py xxxxxxx ======= short test summary info ======== XFAIL xfail_demo.py::test_hello XFAIL xfail_demo.py::test_hello2 - reason: [NOTRUN] + reason: [NOTRUN] XFAIL xfail_demo.py::test_hello3 condition: hasattr(os, 'sep') XFAIL xfail_demo.py::test_hello4 @@ -320,7 +326,7 @@ Running it with the report-on-xfail option gives this output:: XFAIL xfail_demo.py::test_hello6 reason: reason XFAIL xfail_demo.py::test_hello7 - + ======= 7 xfailed in 0.12 seconds ======== .. _`skip/xfail with parametrize`: @@ -346,5 +352,3 @@ test instances when using parametrize: ]) def test_increment(n, expected): assert n + 1 == expected - - From 1e930891659ef5c3197daf52428923c5ab83ad3b Mon Sep 17 00:00:00 2001 From: Xuan Luong Date: Sat, 9 Sep 2017 01:20:56 -0400 Subject: [PATCH 04/13] [bugfix] Checking MarkDecorator equality returns False for non-MarkDecorator object --- _pytest/mark.py | 2 +- changelog/2758.bugfix | 1 + testing/test_mark.py | 12 ++++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 changelog/2758.bugfix diff --git a/_pytest/mark.py b/_pytest/mark.py index 74473a9d78a..d9af0ffaa8d 100644 --- a/_pytest/mark.py +++ b/_pytest/mark.py @@ -330,7 +330,7 @@ def markname(self): return self.name # for backward-compat (2.4.1 had this attr) def __eq__(self, other): - return self.mark == other.mark + return self.mark == other.mark if isinstance(other, MarkDecorator) else False def __repr__(self): return "" % (self.mark,) diff --git a/changelog/2758.bugfix b/changelog/2758.bugfix new file mode 100644 index 00000000000..12e4046b819 --- /dev/null +++ b/changelog/2758.bugfix @@ -0,0 +1 @@ +The equality checking function (``__eq__``) of ``MarkDecorator`` returns ``False`` if one object is not an instance of ``MarkDecorator``. \ No newline at end of file diff --git a/testing/test_mark.py b/testing/test_mark.py index 4c495fde0a6..ae070f3a0f9 100644 --- a/testing/test_mark.py +++ b/testing/test_mark.py @@ -812,3 +812,15 @@ def fake_method(self): assert fake_method.fun # pristine marks dont transfer assert fake_method.pytestmark == [pytest.mark.fun.mark] + + +class TestMarkDecorator(object): + + @pytest.mark.parametrize('lhs, rhs, expected', [ + (pytest.mark.foo(), pytest.mark.foo(), True), + (pytest.mark.foo(), pytest.mark.bar(), False), + (pytest.mark.foo(), 'bar', False), + ('foo', pytest.mark.bar(), False) + ]) + def test__eq__(self, lhs, rhs, expected): + assert (lhs == rhs) == expected From 15222ceca275e2949da115ff6c54d8b80e8ca8b1 Mon Sep 17 00:00:00 2001 From: Xuan Luong Date: Sat, 9 Sep 2017 18:20:43 -0400 Subject: [PATCH 05/13] Fix typo in example of passing a callable to markers --- changelog/xxxx.trivial | 1 + doc/en/example/markers.rst | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changelog/xxxx.trivial diff --git a/changelog/xxxx.trivial b/changelog/xxxx.trivial new file mode 100644 index 00000000000..01110b85253 --- /dev/null +++ b/changelog/xxxx.trivial @@ -0,0 +1 @@ +Fix typo in example of passing a callable to markers (in example/markers.rst) \ No newline at end of file diff --git a/doc/en/example/markers.rst b/doc/en/example/markers.rst index 0dbc67310ae..e3082f279ee 100644 --- a/doc/en/example/markers.rst +++ b/doc/en/example/markers.rst @@ -435,7 +435,7 @@ The output is as follows:: . 1 passed in 0.12 seconds -We can see that the custom marker has its argument set extended with the function ``hello_world``. This is the key different between creating a custom marker as a callable, which invokes ``__call__`` behind the scenes, and using ``with_args``. +We can see that the custom marker has its argument set extended with the function ``hello_world``. This is the key difference between creating a custom marker as a callable, which invokes ``__call__`` behind the scenes, and using ``with_args``. Reading markers which were set from multiple places From e27a0d69aafb4612dbe236e5577e4e6ea45cffca Mon Sep 17 00:00:00 2001 From: Xuan Luong Date: Sat, 9 Sep 2017 18:24:26 -0400 Subject: [PATCH 06/13] Rename changelog file to PR id number --- changelog/{xxxx.trivial => 2765.trivial} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename changelog/{xxxx.trivial => 2765.trivial} (100%) diff --git a/changelog/xxxx.trivial b/changelog/2765.trivial similarity index 100% rename from changelog/xxxx.trivial rename to changelog/2765.trivial From 696c702da78ad162294bb6a7dd9d2b36fed6a3aa Mon Sep 17 00:00:00 2001 From: Xuan Luong Date: Sat, 9 Sep 2017 20:50:45 -0400 Subject: [PATCH 07/13] Update documentation on multiple calls of metafunc.parametrize --- changelog/1548.doc | 1 + doc/en/parametrize.rst | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 changelog/1548.doc diff --git a/changelog/1548.doc b/changelog/1548.doc new file mode 100644 index 00000000000..84ad8f10c39 --- /dev/null +++ b/changelog/1548.doc @@ -0,0 +1 @@ +Add note in ``parametrize.rst`` about calling ``metafunc.parametrize`` multiple times. \ No newline at end of file diff --git a/doc/en/parametrize.rst b/doc/en/parametrize.rst index d1d47c2293b..6215cf133c5 100644 --- a/doc/en/parametrize.rst +++ b/doc/en/parametrize.rst @@ -198,6 +198,10 @@ list:: SKIP [1] test_strings.py:2: got empty parameter set ['stringinput'], function test_valid_string at $REGENDOC_TMPDIR/test_strings.py:1 1 skipped in 0.12 seconds + +Note that when calling ``metafunc.parametrize`` multiple times with different parameter sets, all parameter names across +those sets cannot be duplicated, otherwise an error will be raised. + For further examples, you might want to look at :ref:`more parametrization examples `. From abfd9774ef0f89d5430abf1b83a37ddf268e351b Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Tue, 12 Sep 2017 17:59:09 -0300 Subject: [PATCH 08/13] Remove xfail mark from passing test in py26 --- testing/code/test_source.py | 1 - 1 file changed, 1 deletion(-) diff --git a/testing/code/test_source.py b/testing/code/test_source.py index aaa2b8c5f7b..1d315aa9b73 100644 --- a/testing/code/test_source.py +++ b/testing/code/test_source.py @@ -391,7 +391,6 @@ def g(): assert lines == ['', 'def f():', ' def g():', ' pass', ' '] -@pytest.mark.xfail("sys.version_info[:3] < (2,7,0)") def test_source_of_class_at_eof_without_newline(tmpdir): # this test fails because the implicit inspect.getsource(A) below # does not return the "x = 1" last line. From 52c134aed3f4769d56818927cab1f0b6a757d13b Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Thu, 7 Sep 2017 17:48:34 -0300 Subject: [PATCH 09/13] Add development guide to docs --- HOWTORELEASE.rst | 12 ++-- doc/en/contents.rst | 1 + doc/en/development_guide.rst | 103 +++++++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+), 4 deletions(-) create mode 100644 doc/en/development_guide.rst diff --git a/HOWTORELEASE.rst b/HOWTORELEASE.rst index c85fd9b9946..48a3461d4bc 100644 --- a/HOWTORELEASE.rst +++ b/HOWTORELEASE.rst @@ -1,5 +1,9 @@ -How to release pytest --------------------------------------------- +Release Procedure +----------------- + +Our current policy for releasing is to aim for a bugfix every few weeks and a minor release every 2-3 months. The idea +is to get fixes and new features out instead of trying to cram a ton of features into a release and by consequence +taking a lot of time to make a new one. .. important:: @@ -21,7 +25,7 @@ How to release pytest #. Generate docs, changelog, announcements and upload a package to your ``devpi`` staging server:: - invoke generate.pre_release --password + invoke generate.pre-release --password If ``--password`` is not given, it is assumed the user is already logged in ``devpi``. If you don't have an account, please ask for one. @@ -49,7 +53,7 @@ How to release pytest #. Publish to PyPI:: - invoke generate.publish_release + invoke generate.publish-release where PYPI_NAME is the name of pypi.python.org as configured in your ``~/.pypirc`` file `for devpi `_. diff --git a/doc/en/contents.rst b/doc/en/contents.rst index 028414eb658..6b9eed01048 100644 --- a/doc/en/contents.rst +++ b/doc/en/contents.rst @@ -41,6 +41,7 @@ Full pytest documentation historical-notes license contributing + development_guide talks projects faq diff --git a/doc/en/development_guide.rst b/doc/en/development_guide.rst new file mode 100644 index 00000000000..64a2923b6b7 --- /dev/null +++ b/doc/en/development_guide.rst @@ -0,0 +1,103 @@ +Development Guide +----------------- + +Some general guidelines regarding development in pytest for core maintainers and general contributors. Nothing here +is set in stone and can't be changed, feel free to suggest improvements or changes in the workflow. + + +Code Style +---------- + +* `PEP-8 `_ +* `flake8 `_ for quality checks +* `invoke `_ to automate development tasks + + +Branches +-------- + +We have two long term branches: + +* ``master``: contains the code for the next bugfix release. +* ``features``: contains the code with new features for the next minor release. + +The official repository usually does not contain topic branches, developers and contributors should create topic +branches in their own forks. + +Exceptions can be made for cases where more than one contributor is working on the same +topic or where it makes sense to use some automatic capability of the main repository, such as automatic docs from +`readthedocs `_ for a branch dealing with documentation refactoring. + +Issues +------ + +Any question, feature, bug or proposal is welcome as an issue. Users are encouraged to use them whenever they need. + +GitHub issues should use labels to categorize them. Labels should be created sporadically, to fill a niche; we should +avoid creating labels just for the sake of creating them. + +Here is a list of labels and a brief description mentioning their intent. + + +**Type** + +* ``type:bug``: problem that needs to be addressed. +* ``type:backward compatibility``: issue that will cause problems with old pytest versions. +* ``type:deprecation``: feature that will be deprecated in the future. +* ``type:docs``: documentation missing or needing clarification. +* ``type:enhancement``: new feature or API change, should be merged into ``features``. +* ``type:feature-branch``: new feature or API change, should be merged into ``features``. +* ``type:infrastructure``: improvement to development/releases/CI structure. +* ``type:performance``: performance or memory problem/improvement. +* ``type:proposal``: proposal for a new feature, often to gather opinions or design the API around the new feature. +* ``type:question``: question regarding usage, installation, internals or how to test something. +* ``type:refactoring``: internal improvements to the code. +* ``type:regression``: indicates a problem that was introduced in a release which was working previously. + +**Status** + +* ``status:critical``: grave problem or usability issue that affects lots of users. +* ``status:easy``: easy issue that is friendly to new contributors. +* ``status:help wanted``: core developers need help from experts on this topic. +* ``status:needs information``: reporter needs to provide more information; can be closed after 2 or more weeks of inactivity. + +**Topic** + +* ``topic: collection`` +* ``topic: fixtures`` +* ``topic: parametrize`` +* ``topic: selection`` +* ``topic: reporting`` +* ``topic: tracebacks`` + +**Plugin (internal or external)** + +* ``plugin: junitxml`` +* ``plugin: cache`` +* ``plugin: capture`` +* ``plugin: doctests`` +* ``plugin: pytester`` +* ``plugin: unittest`` +* ``plugin: warnings`` +* ``plugin: xdist`` + + +**OS** + +Issues specific to a single operating system. Do not use as a means to indicate where an issue originated from, only +for problems that happen **only** in that system. + +* ``os: windows`` +* ``linux: windows`` +* ``mac: windows`` + +**Temporary** + +Used to classify issues for limited time, to help find issues related in events for example. +They should be removed after they are no longer relevant. + +* ``temporary: EP2017 sprint``: +* ``temporary: sprint-candidate``: + + +.. include:: ../../HOWTORELEASE.rst From 810320f591d3c309f89acbd7ab4de15cd7250256 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Thu, 14 Sep 2017 19:37:08 -0300 Subject: [PATCH 10/13] Small fixes to development_guide: title and label names * Fix title to use a proper "title" section marker * Fix labels by adding a " " after the ":" * Fix OS labels after obvious mishap * Sort labels --- doc/en/development_guide.rst | 47 ++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/doc/en/development_guide.rst b/doc/en/development_guide.rst index 64a2923b6b7..465e97de0f9 100644 --- a/doc/en/development_guide.rst +++ b/doc/en/development_guide.rst @@ -1,5 +1,6 @@ +================= Development Guide ------------------ +================= Some general guidelines regarding development in pytest for core maintainers and general contributors. Nothing here is set in stone and can't be changed, feel free to suggest improvements or changes in the workflow. @@ -41,42 +42,46 @@ Here is a list of labels and a brief description mentioning their intent. **Type** -* ``type:bug``: problem that needs to be addressed. -* ``type:backward compatibility``: issue that will cause problems with old pytest versions. -* ``type:deprecation``: feature that will be deprecated in the future. -* ``type:docs``: documentation missing or needing clarification. -* ``type:enhancement``: new feature or API change, should be merged into ``features``. -* ``type:feature-branch``: new feature or API change, should be merged into ``features``. -* ``type:infrastructure``: improvement to development/releases/CI structure. -* ``type:performance``: performance or memory problem/improvement. -* ``type:proposal``: proposal for a new feature, often to gather opinions or design the API around the new feature. -* ``type:question``: question regarding usage, installation, internals or how to test something. -* ``type:refactoring``: internal improvements to the code. -* ``type:regression``: indicates a problem that was introduced in a release which was working previously. +* ``type: backward compatibility``: issue that will cause problems with old pytest versions. +* ``type: bug``: problem that needs to be addressed. +* ``type: deprecation``: feature that will be deprecated in the future. +* ``type: docs``: documentation missing or needing clarification. +* ``type: enhancement``: new feature or API change, should be merged into ``features``. +* ``type: feature-branch``: new feature or API change, should be merged into ``features``. +* ``type: infrastructure``: improvement to development/releases/CI structure. +* ``type: performance``: performance or memory problem/improvement. +* ``type: proposal``: proposal for a new feature, often to gather opinions or design the API around the new feature. +* ``type: question``: question regarding usage, installation, internals or how to test something. +* ``type: refactoring``: internal improvements to the code. +* ``type: regression``: indicates a problem that was introduced in a release which was working previously. **Status** -* ``status:critical``: grave problem or usability issue that affects lots of users. -* ``status:easy``: easy issue that is friendly to new contributors. -* ``status:help wanted``: core developers need help from experts on this topic. -* ``status:needs information``: reporter needs to provide more information; can be closed after 2 or more weeks of inactivity. +* ``status: critical``: grave problem or usability issue that affects lots of users. +* ``status: easy``: easy issue that is friendly to new contributors. +* ``status: help wanted``: core developers need help from experts on this topic. +* ``status: needs information``: reporter needs to provide more information; can be closed after 2 or more weeks of inactivity. **Topic** * ``topic: collection`` * ``topic: fixtures`` * ``topic: parametrize`` -* ``topic: selection`` * ``topic: reporting`` +* ``topic: selection`` * ``topic: tracebacks`` **Plugin (internal or external)** -* ``plugin: junitxml`` * ``plugin: cache`` * ``plugin: capture`` * ``plugin: doctests`` +* ``plugin: junitxml`` +* ``plugin: monkeypatch`` +* ``plugin: nose`` +* ``plugin: pastebin`` * ``plugin: pytester`` +* ``plugin: tmpdir`` * ``plugin: unittest`` * ``plugin: warnings`` * ``plugin: xdist`` @@ -87,9 +92,9 @@ Here is a list of labels and a brief description mentioning their intent. Issues specific to a single operating system. Do not use as a means to indicate where an issue originated from, only for problems that happen **only** in that system. +* ``os: linux`` +* ``os: mac`` * ``os: windows`` -* ``linux: windows`` -* ``mac: windows`` **Temporary** From 9933635cf7a2462bfb1d3d4deee3029eb8318b82 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Sat, 16 Sep 2017 18:49:16 -0300 Subject: [PATCH 11/13] Change to py36 as main environment for Python 3 environments in tox This also has the benefit of working around Travis recent failures in Python 3.5 environments. --- tox.ini | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/tox.ini b/tox.ini index a989fe56f27..9245ff4187e 100644 --- a/tox.ini +++ b/tox.ini @@ -12,7 +12,7 @@ envlist = py36 py37 pypy - {py27,py35}-{pexpect,xdist,trial,numpy} + {py27,py36}-{pexpect,xdist,trial,numpy} py27-nobyte doctesting py35-freeze @@ -37,7 +37,6 @@ deps = [testenv:py27-subprocess] changedir = . -basepython = python2.7 deps = pytest-xdist>=1.13 mock @@ -68,7 +67,7 @@ deps = commands = pytest -n1 -rfsxX {posargs:testing} -[testenv:py35-xdist] +[testenv:py36-xdist] deps = {[testenv:py27-xdist]deps} commands = pytest -n3 -rfsxX {posargs:testing} @@ -80,7 +79,7 @@ deps = pexpect commands = pytest -rfsxX test_pdb.py test_terminal.py test_unittest.py -[testenv:py35-pexpect] +[testenv:py36-pexpect] changedir = testing platform = linux|darwin deps = {[testenv:py27-pexpect]deps} @@ -102,7 +101,7 @@ deps = twisted commands = pytest -ra {posargs:testing/test_unittest.py} -[testenv:py35-trial] +[testenv:py36-trial] deps = {[testenv:py27-trial]deps} commands = pytest -ra {posargs:testing/test_unittest.py} @@ -112,7 +111,7 @@ deps=numpy commands= pytest -rfsxX {posargs:testing/python/approx.py} -[testenv:py35-numpy] +[testenv:py36-numpy] deps=numpy commands= pytest -rfsxX {posargs:testing/python/approx.py} @@ -180,7 +179,6 @@ commands = [testenv:coveralls] passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH COVERALLS_REPO_TOKEN usedevelop = True -basepython = python3.5 changedir = . deps = {[testenv]deps} From afe7966683903316866bee75fcb3c94414449011 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Mon, 18 Sep 2017 21:36:54 -0300 Subject: [PATCH 12/13] Fix call to outcome.get_result now that outcome.result is deprecated --- testing/python/collect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/python/collect.py b/testing/python/collect.py index 6b9c6db4e2f..ccd5c11e790 100644 --- a/testing/python/collect.py +++ b/testing/python/collect.py @@ -841,7 +841,7 @@ def test_customized_pymakeitem(self, testdir): def pytest_pycollect_makeitem(): outcome = yield if outcome.excinfo is None: - result = outcome.result + result = outcome.get_result() if result: for func in result: func._some123 = "world" From a2da5a691a63e398223b5588d34e3eeebd0364ad Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Mon, 18 Sep 2017 21:38:15 -0300 Subject: [PATCH 13/13] Update tox and appveyor environments to use py36 by default --- .travis.yml | 10 +++++----- appveyor.yml | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5694cf3552f..21fb6c7db93 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,11 +20,11 @@ env: - TOXENV=py27-trial - TOXENV=py27-numpy - TOXENV=py27-pluggymaster - - TOXENV=py35-pexpect - - TOXENV=py35-xdist - - TOXENV=py35-trial - - TOXENV=py35-numpy - - TOXENV=py35-pluggymaster + - TOXENV=py36-pexpect + - TOXENV=py36-xdist + - TOXENV=py36-trial + - TOXENV=py36-numpy + - TOXENV=py36-pluggymaster - TOXENV=py27-nobyte - TOXENV=doctesting - TOXENV=docs diff --git a/appveyor.yml b/appveyor.yml index ec2611dafd7..01a723d5f9b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -22,11 +22,11 @@ environment: - TOXENV: "py27-trial" - TOXENV: "py27-numpy" - TOXENV: "py27-pluggymaster" - - TOXENV: "py35-pexpect" - - TOXENV: "py35-xdist" - - TOXENV: "py35-trial" - - TOXENV: "py35-numpy" - - TOXENV: "py35-pluggymaster" + - TOXENV: "py36-pexpect" + - TOXENV: "py36-xdist" + - TOXENV: "py36-trial" + - TOXENV: "py36-numpy" + - TOXENV: "py36-pluggymaster" - TOXENV: "py27-nobyte" - TOXENV: "doctesting" - TOXENV: "py35-freeze"