Hello community, here is the log from the commit of package python-pytest for openSUSE:Factory checked in at 2019-09-30 15:50:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pytest (Old) and /work/SRC/openSUSE:Factory/.python-pytest.new.2352 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pytest" Mon Sep 30 15:50:03 2019 rev:49 rq:732742 version:5.1.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pytest/python-pytest.changes 2019-09-23 12:03:17.189946224 +0200 +++ /work/SRC/openSUSE:Factory/.python-pytest.new.2352/python-pytest.changes 2019-09-30 15:50:07.586697227 +0200 @@ -1,0 +2,8 @@ +Mon Sep 23 12:30:16 UTC 2019 - Tomáš Chvátal <tchva...@suse.com> + +- Update to 5.1.3: + * #5807: Fix pypy3.6 (nightly) on windows. + * #5811: Handle --fulltrace correctly with pytest.raises. + * #5819: Windows: Fix regression with conftest whose qualified name contains uppercase characters + +------------------------------------------------------------------- Old: ---- pytest-5.1.2.tar.gz New: ---- pytest-5.1.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pytest.spec ++++++ --- /var/tmp/diff_new_pack.0s1WA0/_old 2019-09-30 15:50:09.430692320 +0200 +++ /var/tmp/diff_new_pack.0s1WA0/_new 2019-09-30 15:50:09.434692309 +0200 @@ -27,7 +27,7 @@ %endif %define skip_python2 1 Name: python-pytest%{psuffix} -Version: 5.1.2 +Version: 5.1.3 Release: 0 Summary: Python testing tool with autodiscovery and detailed asserts License: MIT @@ -53,12 +53,23 @@ Obsoletes: python-pytest-doc BuildArch: noarch %if %{with test} +BuildRequires: %{python_module Jinja2} +BuildRequires: %{python_module Twisted} +BuildRequires: %{python_module decorator} BuildRequires: %{python_module hypothesis} BuildRequires: %{python_module importlib_metadata >= 0.12} +BuildRequires: %{python_module mock} +BuildRequires: %{python_module nose} +BuildRequires: %{python_module numpy} +BuildRequires: %{python_module pexpect} BuildRequires: %{python_module pygments-pytest} BuildRequires: %{python_module pytest >= %{version}} +BuildRequires: %{python_module pytest-forked} +BuildRequires: %{python_module pytest-xdist} +BuildRequires: %{python_module requests} BuildRequires: %{python_module setuptools_scm} BuildRequires: %{python_module xmlschema} +BuildRequires: lsof %endif %if %{python3_version_nodots} < 36 Requires: python-pathlib2 >= 2.2.0 ++++++ pytest-5.1.2.tar.gz -> pytest-5.1.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/.travis.yml new/pytest-5.1.3/.travis.yml --- old/pytest-5.1.2/.travis.yml 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/.travis.yml 2019-09-21 15:49:40.000000000 +0200 @@ -42,9 +42,8 @@ - env: TOXENV=pypy3-xdist python: 'pypy3' - - env: TOXENV=py35 - dist: trusty - python: '3.5.0' + - env: TOXENV=py35-xdist + python: '3.5' # Coverage for: # - pytester's LsofFdLeakChecker diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/AUTHORS new/pytest-5.1.3/AUTHORS --- old/pytest-5.1.2/AUTHORS 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/AUTHORS 2019-09-21 15:49:40.000000000 +0200 @@ -98,6 +98,7 @@ Florian Bruhin Floris Bruynooghe Gabriel Reis +Gene Wood George Kussumoto Georgy Dyuldin Graham Horler diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/CHANGELOG.rst new/pytest-5.1.3/CHANGELOG.rst --- old/pytest-5.1.2/CHANGELOG.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/CHANGELOG.rst 2019-09-21 15:49:40.000000000 +0200 @@ -18,6 +18,22 @@ .. towncrier release notes start +pytest 5.1.3 (2019-09-18) +========================= + +Bug Fixes +--------- + +- `#5807 <https://github.com/pytest-dev/pytest/issues/5807>`_: Fix pypy3.6 (nightly) on windows. + + +- `#5811 <https://github.com/pytest-dev/pytest/issues/5811>`_: Handle ``--fulltrace`` correctly with ``pytest.raises``. + + +- `#5819 <https://github.com/pytest-dev/pytest/issues/5819>`_: Windows: Fix regression with conftest whose qualified name contains uppercase + characters (introduced by #5792). + + pytest 5.1.2 (2019-08-30) ========================= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/PKG-INFO new/pytest-5.1.3/PKG-INFO --- old/pytest-5.1.2/PKG-INFO 2019-08-30 21:02:53.000000000 +0200 +++ new/pytest-5.1.3/PKG-INFO 2019-09-21 15:49:57.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: pytest -Version: 5.1.2 +Version: 5.1.3 Summary: pytest: simple powerful testing with Python Home-page: https://docs.pytest.org/en/latest/ Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/Makefile new/pytest-5.1.3/doc/en/Makefile --- old/pytest-5.1.2/doc/en/Makefile 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/Makefile 2019-09-21 15:49:40.000000000 +0200 @@ -16,7 +16,7 @@ --normalize "/[ \t]+\n/\n/" \ --normalize "~\$$REGENDOC_TMPDIR~/home/sweet/project~" \ --normalize "~/path/to/example~/home/sweet/project~" \ - --normalize "/in \d+.\d+s ==/in 0.12s ==/" \ + --normalize "/in \d.\d\ds/in 0.12s/" \ --normalize "@/tmp/pytest-of-.*/pytest-\d+@PYTEST_TMPDIR@" \ --normalize "@pytest-(\d+)\\.[^ ,]+@pytest-\1.x.y@" \ --normalize "@(This is pytest version )(\d+)\\.[^ ,]+@\1\2.x.y@" \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/announce/index.rst new/pytest-5.1.3/doc/en/announce/index.rst --- old/pytest-5.1.2/doc/en/announce/index.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/announce/index.rst 2019-09-21 15:49:40.000000000 +0200 @@ -6,6 +6,7 @@ :maxdepth: 2 + release-5.1.3 release-5.1.2 release-5.1.1 release-5.1.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/announce/release-5.1.3.rst new/pytest-5.1.3/doc/en/announce/release-5.1.3.rst --- old/pytest-5.1.2/doc/en/announce/release-5.1.3.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/pytest-5.1.3/doc/en/announce/release-5.1.3.rst 2019-09-21 15:49:40.000000000 +0200 @@ -0,0 +1,23 @@ +pytest-5.1.3 +======================================= + +pytest 5.1.3 has just been released to PyPI. + +This is a bug-fix release, being a drop-in replacement. To upgrade:: + + pip install --upgrade pytest + +The full changelog is available at https://docs.pytest.org/en/latest/changelog.html. + +Thanks to all who contributed to this release, among them: + +* Anthony Sottile +* Bruno Oliveira +* Christian Neumüller +* Daniel Hahler +* Gene Wood +* Hugo + + +Happy testing, +The pytest Development Team diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/assert.rst new/pytest-5.1.3/doc/en/assert.rst --- old/pytest-5.1.2/doc/en/assert.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/assert.rst 2019-09-21 15:49:40.000000000 +0200 @@ -279,7 +279,7 @@ E vals: 1 != 2 test_foocompare.py:12: AssertionError - 1 failed in 0.02s + 1 failed in 0.12s .. _assert-details: .. _`assert introspection`: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/builtin.rst new/pytest-5.1.3/doc/en/builtin.rst --- old/pytest-5.1.2/doc/en/builtin.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/builtin.rst 2019-09-21 15:49:40.000000000 +0200 @@ -160,7 +160,7 @@ in python < 3.6 this is a pathlib2.Path - no tests ran in 0.00s + no tests ran in 0.12s You can also interactively ask for help, e.g. by typing on the Python interactive prompt something like: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/cache.rst new/pytest-5.1.3/doc/en/cache.rst --- old/pytest-5.1.2/doc/en/cache.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/cache.rst 2019-09-21 15:49:40.000000000 +0200 @@ -75,7 +75,7 @@ E Failed: bad luck test_50.py:7: Failed - 2 failed, 48 passed in 0.07s + 2 failed, 48 passed in 0.12s If you then run it with ``--lf``: @@ -230,7 +230,7 @@ test_caching.py:20: AssertionError -------------------------- Captured stdout setup --------------------------- running expensive computation... - 1 failed in 0.02s + 1 failed in 0.12s If you run it a second time, the value will be retrieved from the cache and nothing will be printed: @@ -249,7 +249,7 @@ E assert 42 == 23 test_caching.py:20: AssertionError - 1 failed in 0.02s + 1 failed in 0.12s See the :ref:`cache-api` for more details. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/customize.rst new/pytest-5.1.3/doc/en/customize.rst --- old/pytest-5.1.2/doc/en/customize.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/customize.rst 2019-09-21 15:49:40.000000000 +0200 @@ -107,8 +107,8 @@ # first look for pytest.ini files path/pytest.ini - path/setup.cfg # must also contain [tool:pytest] section to match path/tox.ini # must also contain [pytest] section to match + path/setup.cfg # must also contain [tool:pytest] section to match pytest.ini ... # all the way down to the root diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/example/markers.rst new/pytest-5.1.3/doc/en/example/markers.rst --- old/pytest-5.1.2/doc/en/example/markers.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/example/markers.rst 2019-09-21 15:49:40.000000000 +0200 @@ -499,7 +499,7 @@ $ pytest -q -s Mark(name='my_marker', args=(<function hello_world at 0xdeadbeef>,), kwargs={}) . - 1 passed in 0.01s + 1 passed in 0.12s 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``. @@ -551,7 +551,7 @@ glob args=('class',) kwargs={'x': 2} glob args=('module',) kwargs={'x': 1} . - 1 passed in 0.02s + 1 passed in 0.12s marking platform specific tests with pytest -------------------------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/example/parametrize.rst new/pytest-5.1.3/doc/en/example/parametrize.rst --- old/pytest-5.1.2/doc/en/example/parametrize.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/example/parametrize.rst 2019-09-21 15:49:40.000000000 +0200 @@ -54,7 +54,7 @@ $ pytest -q test_compute.py .. [100%] - 2 passed in 0.01s + 2 passed in 0.12s We run only two computations, so we see two dots. let's run the full monty: @@ -73,7 +73,7 @@ E assert 4 < 4 test_compute.py:4: AssertionError - 1 failed, 4 passed in 0.02s + 1 failed, 4 passed in 0.12s As expected when running the full range of ``param1`` values we'll get an error on the last one. @@ -343,7 +343,7 @@ E Failed: deliberately failing for demo purposes test_backends.py:8: Failed - 1 failed, 1 passed in 0.02s + 1 failed, 1 passed in 0.12s The first invocation with ``db == "DB1"`` passed while the second with ``db == "DB2"`` failed. Our ``db`` fixture function has instantiated each of the DB values during the setup phase while the ``pytest_generate_tests`` generated two according calls to the ``test_db_initialized`` during the collection phase. @@ -454,7 +454,7 @@ E assert 1 == 2 test_parametrize.py:21: AssertionError - 1 failed, 2 passed in 0.03s + 1 failed, 2 passed in 0.12s Indirect parametrization with multiple fixtures -------------------------------------------------------------- @@ -479,7 +479,7 @@ ========================= short test summary info ========================== SKIPPED [12] $REGENDOC_TMPDIR/CWD/multipython.py:30: 'python3.5' not found SKIPPED [12] $REGENDOC_TMPDIR/CWD/multipython.py:30: 'python3.7' not found - 3 passed, 24 skipped in 0.24s + 3 passed, 24 skipped in 0.12s Indirect parametrization of optional implementations/imports -------------------------------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/example/simple.rst new/pytest-5.1.3/doc/en/example/simple.rst --- old/pytest-5.1.2/doc/en/example/simple.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/example/simple.rst 2019-09-21 15:49:40.000000000 +0200 @@ -65,7 +65,7 @@ test_sample.py:6: AssertionError --------------------------- Captured stdout call --------------------------- first - 1 failed in 0.02s + 1 failed in 0.12s And now with supplying a command line option: @@ -89,7 +89,7 @@ test_sample.py:6: AssertionError --------------------------- Captured stdout call --------------------------- second - 1 failed in 0.02s + 1 failed in 0.12s You can see that the command line option arrived in our test. This completes the basic pattern. However, one often rather wants to process @@ -261,7 +261,7 @@ E Failed: not configured: 42 test_checkconfig.py:11: Failed - 1 failed in 0.02s + 1 failed in 0.12s If you only want to hide certain exceptions, you can set ``__tracebackhide__`` to a callable which gets the ``ExceptionInfo`` object. You can for example use @@ -445,7 +445,7 @@ ========================= slowest 3 test durations ========================= 0.30s call test_some_are_slow.py::test_funcslow2 - 0.20s call test_some_are_slow.py::test_funcslow1 + 0.21s call test_some_are_slow.py::test_funcslow1 0.10s call test_some_are_slow.py::test_funcfast ============================ 3 passed in 0.12s ============================= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/example/special.rst new/pytest-5.1.3/doc/en/example/special.rst --- old/pytest-5.1.2/doc/en/example/special.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/example/special.rst 2019-09-21 15:49:40.000000000 +0200 @@ -81,4 +81,4 @@ .test other .test_unit1 method called . - 4 passed in 0.01s + 4 passed in 0.12s diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/fixture.rst new/pytest-5.1.3/doc/en/fixture.rst --- old/pytest-5.1.2/doc/en/fixture.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/fixture.rst 2019-09-21 15:49:40.000000000 +0200 @@ -361,7 +361,7 @@ $ pytest -s -q --tb=no FFteardown smtp - 2 failed in 0.79s + 2 failed in 0.12s We see that the ``smtp_connection`` instance is finalized after the two tests finished execution. Note that if we decorated our fixture @@ -515,7 +515,7 @@ $ pytest -s -q --tb=no FFfinalizing <smtplib.SMTP object at 0xdeadbeef> (smtp.gmail.com) - 2 failed in 0.77s + 2 failed in 0.12s Let's quickly create another test module that actually sets the server URL in its module namespace: @@ -692,7 +692,7 @@ test_module.py:13: AssertionError ------------------------- Captured stdout teardown ------------------------- finalizing <smtplib.SMTP object at 0xdeadbeef> - 4 failed in 1.69s + 4 failed in 0.12s We see that our two test functions each ran twice, against the different ``smtp_connection`` instances. Note also, that with the ``mail.python.org`` @@ -1043,7 +1043,7 @@ $ pytest -q .. [100%] - 2 passed in 0.01s + 2 passed in 0.12s You can specify multiple fixtures like this: @@ -1151,7 +1151,7 @@ $ pytest -q .. [100%] - 2 passed in 0.01s + 2 passed in 0.12s Here is how autouse fixtures work in other scopes: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/getting-started.rst new/pytest-5.1.3/doc/en/getting-started.rst --- old/pytest-5.1.2/doc/en/getting-started.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/getting-started.rst 2019-09-21 15:49:40.000000000 +0200 @@ -108,7 +108,7 @@ $ pytest -q test_sysexit.py . [100%] - 1 passed in 0.01s + 1 passed in 0.12s Group multiple tests in a class -------------------------------------------------------------- @@ -145,7 +145,7 @@ E + where False = hasattr('hello', 'check') test_class.py:8: AssertionError - 1 failed, 1 passed in 0.02s + 1 failed, 1 passed in 0.12s The first test passed and the second failed. You can easily see the intermediate values in the assertion to help you understand the reason for the failure. @@ -180,7 +180,7 @@ test_tmpdir.py:3: AssertionError --------------------------- Captured stdout call --------------------------- PYTEST_TMPDIR/test_needsfiles0 - 1 failed in 0.02s + 1 failed in 0.12s More info on tmpdir handling is available at :ref:`Temporary directories and files <tmpdir handling>`. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/goodpractices.rst new/pytest-5.1.3/doc/en/goodpractices.rst --- old/pytest-5.1.2/doc/en/goodpractices.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/goodpractices.rst 2019-09-21 15:49:40.000000000 +0200 @@ -88,7 +88,7 @@ .. note:: - See :ref:`pythonpath` for more information about the difference between calling ``pytest`` and + See :ref:`pytest vs python -m pytest` for more information about the difference between calling ``pytest`` and ``python -m pytest``. Note that using this scheme your test files must have **unique names**, because diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/parametrize.rst new/pytest-5.1.3/doc/en/parametrize.rst --- old/pytest-5.1.2/doc/en/parametrize.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/parametrize.rst 2019-09-21 15:49:40.000000000 +0200 @@ -205,7 +205,7 @@ $ pytest -q --stringinput="hello" --stringinput="world" test_strings.py .. [100%] - 2 passed in 0.01s + 2 passed in 0.12s Let's also run with a stringinput that will lead to a failing test: @@ -225,7 +225,7 @@ E + where <built-in method isalpha of str object at 0xdeadbeef> = '!'.isalpha test_strings.py:4: AssertionError - 1 failed in 0.02s + 1 failed in 0.12s As expected our test function fails. @@ -239,7 +239,7 @@ s [100%] ========================= short test summary info ========================== SKIPPED [1] test_strings.py: got empty parameter set ['stringinput'], function test_valid_string at $REGENDOC_TMPDIR/test_strings.py:2 - 1 skipped in 0.00s + 1 skipped in 0.12s 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. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/pythonpath.rst new/pytest-5.1.3/doc/en/pythonpath.rst --- old/pytest-5.1.2/doc/en/pythonpath.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/pythonpath.rst 2019-09-21 15:49:40.000000000 +0200 @@ -72,6 +72,8 @@ This is also discussed in details in :ref:`test discovery`. +.. _`pytest vs python -m pytest`: + Invoking ``pytest`` versus ``python -m pytest`` ----------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/reference.rst new/pytest-5.1.3/doc/en/reference.rst --- old/pytest-5.1.2/doc/en/reference.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/reference.rst 2019-09-21 15:49:40.000000000 +0200 @@ -59,7 +59,7 @@ **Tutorial**: :ref:`assertraises`. -.. autofunction:: pytest.raises(expected_exception: Exception, [match], [message]) +.. autofunction:: pytest.raises(expected_exception: Exception, [match]) :with: excinfo pytest.deprecated_call diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/unittest.rst new/pytest-5.1.3/doc/en/unittest.rst --- old/pytest-5.1.2/doc/en/unittest.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/unittest.rst 2019-09-21 15:49:40.000000000 +0200 @@ -219,7 +219,7 @@ $ pytest -q test_unittest_cleandir.py . [100%] - 1 passed in 0.01s + 1 passed in 0.12s ... gives us one passed test because the ``initdir`` fixture function was executed ahead of the ``test_method``. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/doc/en/warnings.rst new/pytest-5.1.3/doc/en/warnings.rst --- old/pytest-5.1.2/doc/en/warnings.rst 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/doc/en/warnings.rst 2019-09-21 15:49:40.000000000 +0200 @@ -64,7 +64,7 @@ E UserWarning: api v1, should use functions from v2 test_show_warnings.py:5: UserWarning - 1 failed in 0.02s + 1 failed in 0.12s The same option can be set in the ``pytest.ini`` file using the ``filterwarnings`` ini option. For example, the configuration below will ignore all user warnings, but will transform @@ -407,7 +407,7 @@ class Test: -- Docs: https://docs.pytest.org/en/latest/warnings.html - 1 warnings in 0.00s + 1 warnings in 0.12s These warnings might be filtered using the same builtin mechanisms used to filter other types of warnings. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/src/_pytest/_version.py new/pytest-5.1.3/src/_pytest/_version.py --- old/pytest-5.1.2/src/_pytest/_version.py 2019-08-30 21:02:52.000000000 +0200 +++ new/pytest-5.1.3/src/_pytest/_version.py 2019-09-21 15:49:56.000000000 +0200 @@ -1,4 +1,4 @@ # coding: utf-8 # file generated by setuptools_scm # don't change, don't track in version control -version = '5.1.2' +version = '5.1.3' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/src/_pytest/capture.py new/pytest-5.1.3/src/_pytest/capture.py --- old/pytest-5.1.2/src/_pytest/capture.py 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/src/_pytest/capture.py 2019-09-21 15:49:40.000000000 +0200 @@ -789,7 +789,11 @@ See https://github.com/pytest-dev/py/issues/103 """ - if not sys.platform.startswith("win32") or sys.version_info[:2] < (3, 6): + if ( + not sys.platform.startswith("win32") + or sys.version_info[:2] < (3, 6) + or hasattr(sys, "pypy_version_info") + ): return # bail out if ``stream`` doesn't seem like a proper ``io`` stream (#2666) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/src/_pytest/config/__init__.py new/pytest-5.1.3/src/_pytest/config/__init__.py --- old/pytest-5.1.2/src/_pytest/config/__init__.py 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/src/_pytest/config/__init__.py 2019-09-21 15:49:40.000000000 +0200 @@ -30,7 +30,6 @@ from _pytest.compat import importlib_metadata from _pytest.outcomes import fail from _pytest.outcomes import Skipped -from _pytest.pathlib import unique_path from _pytest.warning_types import PytestConfigWarning hookimpl = HookimplMarker("pytest") @@ -367,7 +366,7 @@ """ current = py.path.local() self._confcutdir = ( - unique_path(current.join(namespace.confcutdir, abs=True)) + current.join(namespace.confcutdir, abs=True) if namespace.confcutdir else None ) @@ -406,13 +405,11 @@ else: directory = path - directory = unique_path(directory) - # XXX these days we may rather want to use config.rootdir # and allow users to opt into looking into the rootdir parent # directories instead of requiring to specify confcutdir clist = [] - for parent in directory.parts(): + for parent in directory.realpath().parts(): if self._confcutdir and self._confcutdir.relto(parent): continue conftestpath = parent.join("conftest.py") @@ -432,12 +429,14 @@ raise KeyError(name) def _importconftest(self, conftestpath): - # Use realpath to avoid loading the same conftest twice + # Use a resolved Path object as key to avoid loading the same conftest twice # with build systems that create build directories containing # symlinks to actual files. - conftestpath = unique_path(conftestpath) + # Using Path().resolve() is better than py.path.realpath because + # it resolves to the correct path/drive in case-insensitive file systems (#5792) + key = Path(str(conftestpath)).resolve() try: - return self._conftestpath2mod[conftestpath] + return self._conftestpath2mod[key] except KeyError: pkgpath = conftestpath.pypkgpath() if pkgpath is None: @@ -454,7 +453,7 @@ raise ConftestImportFailure(conftestpath, sys.exc_info()) self._conftest_plugins.add(mod) - self._conftestpath2mod[conftestpath] = mod + self._conftestpath2mod[key] = mod dirpath = conftestpath.dirpath() if dirpath in self._dirpath2confmods: for path, mods in self._dirpath2confmods.items(): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/src/_pytest/nodes.py new/pytest-5.1.3/src/_pytest/nodes.py --- old/pytest-5.1.2/src/_pytest/nodes.py 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/src/_pytest/nodes.py 2019-09-21 15:49:40.000000000 +0200 @@ -245,7 +245,6 @@ fm = self.session._fixturemanager if excinfo.errisinstance(fm.FixtureLookupError): return excinfo.value.formatrepr() - tbfilter = True if self.config.getoption("fulltrace", False): style = "long" else: @@ -253,7 +252,6 @@ self._prunetraceback(excinfo) if len(excinfo.traceback) == 0: excinfo.traceback = tb - tbfilter = False # prunetraceback already does it if style == "auto": style = "long" # XXX should excinfo.getrepr record all data and toterminal() process it? @@ -279,7 +277,7 @@ abspath=abspath, showlocals=self.config.getoption("showlocals", False), style=style, - tbfilter=tbfilter, + tbfilter=False, # pruned already, or in --fulltrace mode. truncate_locals=truncate_locals, ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/src/_pytest/pathlib.py new/pytest-5.1.3/src/_pytest/pathlib.py --- old/pytest-5.1.2/src/_pytest/pathlib.py 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/src/_pytest/pathlib.py 2019-09-21 15:49:40.000000000 +0200 @@ -11,7 +11,6 @@ from os.path import expanduser from os.path import expandvars from os.path import isabs -from os.path import normcase from os.path import sep from posixpath import sep as posix_sep @@ -335,12 +334,3 @@ def parts(s): parts = s.split(sep) return {sep.join(parts[: i + 1]) or sep for i in range(len(parts))} - - -def unique_path(path): - """Returns a unique path in case-insensitive (but case-preserving) file - systems such as Windows. - - This is needed only for ``py.path.local``; ``pathlib.Path`` handles this - natively with ``resolve()``.""" - return type(path)(normcase(str(path.realpath()))) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/src/pytest.egg-info/PKG-INFO new/pytest-5.1.3/src/pytest.egg-info/PKG-INFO --- old/pytest-5.1.2/src/pytest.egg-info/PKG-INFO 2019-08-30 21:02:52.000000000 +0200 +++ new/pytest-5.1.3/src/pytest.egg-info/PKG-INFO 2019-09-21 15:49:57.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: pytest -Version: 5.1.2 +Version: 5.1.3 Summary: pytest: simple powerful testing with Python Home-page: https://docs.pytest.org/en/latest/ Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/src/pytest.egg-info/SOURCES.txt new/pytest-5.1.3/src/pytest.egg-info/SOURCES.txt --- old/pytest-5.1.2/src/pytest.egg-info/SOURCES.txt 2019-08-30 21:02:52.000000000 +0200 +++ new/pytest-5.1.3/src/pytest.egg-info/SOURCES.txt 2019-09-21 15:49:57.000000000 +0200 @@ -208,6 +208,7 @@ doc/en/announce/release-5.1.0.rst doc/en/announce/release-5.1.1.rst doc/en/announce/release-5.1.2.rst +doc/en/announce/release-5.1.3.rst doc/en/announce/sprint2016.rst doc/en/example/attic.rst doc/en/example/conftest.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/testing/code/test_excinfo.py new/pytest-5.1.3/testing/code/test_excinfo.py --- old/pytest-5.1.2/testing/code/test_excinfo.py 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/testing/code/test_excinfo.py 2019-09-21 15:49:40.000000000 +0200 @@ -399,6 +399,13 @@ result = testdir.runpytest() assert result.ret != 0 result.stdout.fnmatch_lines(["*AssertionError*Pattern*[123]*not found*"]) + assert "__tracebackhide__ = True" not in result.stdout.str() + + result = testdir.runpytest("--fulltrace") + assert result.ret != 0 + result.stdout.fnmatch_lines( + ["*__tracebackhide__ = True*", "*AssertionError*Pattern*[123]*not found*"] + ) class TestFormattedExcinfo: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/testing/test_conftest.py new/pytest-5.1.3/testing/test_conftest.py --- old/pytest-5.1.2/testing/test_conftest.py 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/testing/test_conftest.py 2019-09-21 15:49:40.000000000 +0200 @@ -1,12 +1,12 @@ -import os.path +import os import textwrap +from pathlib import Path import py import pytest from _pytest.config import PytestPluginManager from _pytest.main import ExitCode -from _pytest.pathlib import unique_path def ConftestWithSetinitial(path): @@ -143,11 +143,11 @@ # but we can still import a conftest directly conftest._importconftest(conf) values = conftest._getconftestmodules(conf.dirpath()) - assert values[0].__file__.startswith(str(unique_path(conf))) + assert values[0].__file__.startswith(str(conf)) # and all sub paths get updated properly values = conftest._getconftestmodules(p) assert len(values) == 1 - assert values[0].__file__.startswith(str(unique_path(conf))) + assert values[0].__file__.startswith(str(conf)) def test_conftestcutdir_inplace_considered(testdir): @@ -156,7 +156,7 @@ conftest_setinitial(conftest, [conf.dirpath()], confcutdir=conf.dirpath()) values = conftest._getconftestmodules(conf.dirpath()) assert len(values) == 1 - assert values[0].__file__.startswith(str(unique_path(conf))) + assert values[0].__file__.startswith(str(conf)) @pytest.mark.parametrize("name", "test tests whatever .dotdir".split()) @@ -165,11 +165,12 @@ subconftest = sub.ensure("conftest.py") conftest = PytestPluginManager() conftest_setinitial(conftest, [sub.dirpath()], confcutdir=testdir.tmpdir) + key = Path(str(subconftest)).resolve() if name not in ("whatever", ".dotdir"): - assert unique_path(subconftest) in conftest._conftestpath2mod + assert key in conftest._conftestpath2mod assert len(conftest._conftestpath2mod) == 1 else: - assert subconftest not in conftest._conftestpath2mod + assert key not in conftest._conftestpath2mod assert len(conftest._conftestpath2mod) == 0 @@ -282,7 +283,7 @@ reason="only relevant for case insensitive file systems", ) def test_conftest_badcase(testdir): - """Check conftest.py loading when directory casing is wrong.""" + """Check conftest.py loading when directory casing is wrong (#5792).""" testdir.tmpdir.mkdir("JenkinsRoot").mkdir("test") source = {"setup.py": "", "test/__init__.py": "", "test/conftest.py": ""} testdir.makepyfile(**{"JenkinsRoot/%s" % k: v for k, v in source.items()}) @@ -291,6 +292,16 @@ result = testdir.runpytest() assert result.ret == ExitCode.NO_TESTS_COLLECTED + +def test_conftest_uppercase(testdir): + """Check conftest.py whose qualified name contains uppercase characters (#5819)""" + source = {"__init__.py": "", "Foo/conftest.py": "", "Foo/__init__.py": ""} + testdir.makepyfile(**source) + + testdir.tmpdir.chdir() + result = testdir.runpytest() + assert result.ret == ExitCode.NO_TESTS_COLLECTED + def test_no_conftest(testdir): testdir.makeconftest("assert 0") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pytest-5.1.2/testing/test_pdb.py new/pytest-5.1.3/testing/test_pdb.py --- old/pytest-5.1.2/testing/test_pdb.py 2019-08-30 21:02:33.000000000 +0200 +++ new/pytest-5.1.3/testing/test_pdb.py 2019-09-21 15:49:40.000000000 +0200 @@ -853,7 +853,7 @@ Test that supports breakpoint global marks on Python 3.7+ and not on CPython 3.5, 2.7 """ - if sys.version_info.major == 3 and sys.version_info.minor >= 7: + if sys.version_info >= (3, 7): assert SUPPORTS_BREAKPOINT_BUILTIN is True if sys.version_info.major == 3 and sys.version_info.minor == 5: assert SUPPORTS_BREAKPOINT_BUILTIN is False