Hello community,

here is the log from the commit of package python-pytest4 for openSUSE:Factory 
checked in at 2020-01-16 18:15:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pytest4 (Old)
 and      /work/SRC/openSUSE:Factory/.python-pytest4.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pytest4"

Thu Jan 16 18:15:33 2020 rev:11 rq:764287 version:4.6.9

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pytest4/python-pytest4.changes    
2019-11-04 17:05:32.464205660 +0100
+++ /work/SRC/openSUSE:Factory/.python-pytest4.new.26092/python-pytest4.changes 
2020-01-16 18:15:42.036786780 +0100
@@ -1,0 +2,12 @@
+Tue Jan 14 12:33:25 UTC 2020 - Tomáš Chvátal <[email protected]>
+
+- Fix typo importlib_metadata -> importlib-metadata
+
+-------------------------------------------------------------------
+Mon Jan  6 13:19:54 UTC 2020 - Tomáš Chvátal <[email protected]>
+
+- Update to 4.6.9:
+  * various minor bugfixes for 4.x series to keep it working with
+    latest python modules
+
+-------------------------------------------------------------------

Old:
----
  pytest-4.6.6.tar.gz

New:
----
  pytest-4.6.9.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pytest4.spec ++++++
--- /var/tmp/diff_new_pack.m29vIk/_old  2020-01-16 18:15:43.800787777 +0100
+++ /var/tmp/diff_new_pack.m29vIk/_new  2020-01-16 18:15:43.800787777 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -26,7 +26,7 @@
 %bcond_with test
 %endif
 Name:           python-pytest4%{psuffix}
-Version:        4.6.6
+Version:        4.6.9
 Release:        0
 Summary:        Python testing tool with autodiscovery and detailed asserts
 License:        MIT
@@ -55,7 +55,7 @@
 BuildArch:      noarch
 %if %{with test}
 BuildRequires:  %{python_module hypothesis}
-BuildRequires:  %{python_module importlib_metadata >= 0.12}
+BuildRequires:  %{python_module importlib-metadata >= 0.12}
 BuildRequires:  %{python_module pygments-pytest}
 BuildRequires:  %{python_module pytest4 >= %{version}}
 BuildRequires:  %{python_module setuptools_scm}

++++++ pytest-4.6.6.tar.gz -> pytest-4.6.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/.pre-commit-config.yaml 
new/pytest-4.6.9/.pre-commit-config.yaml
--- old/pytest-4.6.6/.pre-commit-config.yaml    2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/.pre-commit-config.yaml    2020-01-04 21:35:12.000000000 
+0100
@@ -1,7 +1,7 @@
 exclude: doc/en/example/py2py3/test_py2.py
 repos:
--   repo: https://github.com/python/black
-    rev: 19.3b0
+-   repo: https://github.com/psf/black
+    rev: 19.10b0
     hooks:
     -   id: black
         args: [--safe, --quiet]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/AUTHORS new/pytest-4.6.9/AUTHORS
--- old/pytest-4.6.6/AUTHORS    2019-10-13 16:54:01.000000000 +0200
+++ new/pytest-4.6.9/AUTHORS    2020-01-04 21:35:12.000000000 +0100
@@ -58,6 +58,7 @@
 Christian Tismer
 Christopher Gilling
 Christopher Dignam
+Claudio Madotto
 CrazyMerlyn
 Cyrus Maden
 Damian Skrzypczak
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/CHANGELOG.rst 
new/pytest-4.6.9/CHANGELOG.rst
--- old/pytest-4.6.6/CHANGELOG.rst      2019-10-13 16:54:01.000000000 +0200
+++ new/pytest-4.6.9/CHANGELOG.rst      2020-01-04 21:35:12.000000000 +0100
@@ -18,6 +18,52 @@
 
 .. towncrier release notes start
 
+pytest 4.6.9 (2020-01-04)
+=========================
+
+Bug Fixes
+---------
+
+- `#6301 <https://github.com/pytest-dev/pytest/issues/6301>`_: Fix assertion 
rewriting for egg-based distributions and ``editable`` installs (``pip install 
--editable``).
+
+
+pytest 4.6.8 (2019-12-19)
+=========================
+
+Features
+--------
+
+- `#5471 <https://github.com/pytest-dev/pytest/issues/5471>`_: JUnit XML now 
includes a timestamp and hostname in the testsuite tag.
+
+
+
+Bug Fixes
+---------
+
+- `#5430 <https://github.com/pytest-dev/pytest/issues/5430>`_: junitxml: Logs 
for failed test are now passed to junit report in case the test fails during 
call phase.
+
+
+
+Trivial/Internal Changes
+------------------------
+
+- `#6345 <https://github.com/pytest-dev/pytest/issues/6345>`_: Pin 
``colorama`` to ``0.4.1`` only for Python 3.4 so newer Python versions can 
still receive colorama updates.
+
+
+pytest 4.6.7 (2019-12-05)
+=========================
+
+Bug Fixes
+---------
+
+- `#5477 <https://github.com/pytest-dev/pytest/issues/5477>`_: The XML file 
produced by ``--junitxml`` now correctly contain a ``<testsuites>`` root 
element.
+
+
+- `#6044 <https://github.com/pytest-dev/pytest/issues/6044>`_: Properly ignore 
``FileNotFoundError`` (``OSError.errno == NOENT`` in Python 2) exceptions when 
trying to remove old temporary directories,
+  for instance when multiple processes try to remove the same directory 
(common with ``pytest-xdist``
+  for example).
+
+
 pytest 4.6.6 (2019-10-11)
 =========================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/LICENSE new/pytest-4.6.9/LICENSE
--- old/pytest-4.6.6/LICENSE    2019-10-13 16:54:01.000000000 +0200
+++ new/pytest-4.6.9/LICENSE    2020-01-04 21:35:12.000000000 +0100
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2004-2019 Holger Krekel and others
+Copyright (c) 2004-2020 Holger Krekel and others
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of
 this software and associated documentation files (the "Software"), to deal in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/PKG-INFO new/pytest-4.6.9/PKG-INFO
--- old/pytest-4.6.6/PKG-INFO   2019-10-13 16:54:20.000000000 +0200
+++ new/pytest-4.6.9/PKG-INFO   2020-01-04 21:35:29.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pytest
-Version: 4.6.6
+Version: 4.6.9
 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
@@ -140,7 +140,7 @@
         License
         -------
         
-        Copyright Holger Krekel and others, 2004-2019.
+        Copyright Holger Krekel and others, 2004-2020.
         
         Distributed under the terms of the `MIT`_ license, pytest is free and 
open source software.
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/README.rst new/pytest-4.6.9/README.rst
--- old/pytest-4.6.6/README.rst 2019-10-13 16:54:01.000000000 +0200
+++ new/pytest-4.6.9/README.rst 2020-01-04 21:35:12.000000000 +0100
@@ -131,7 +131,7 @@
 License
 -------
 
-Copyright Holger Krekel and others, 2004-2019.
+Copyright Holger Krekel and others, 2004-2020.
 
 Distributed under the terms of the `MIT`_ license, pytest is free and open 
source software.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/azure-pipelines.yml 
new/pytest-4.6.9/azure-pipelines.yml
--- old/pytest-4.6.6/azure-pipelines.yml        2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/azure-pipelines.yml        2020-01-04 21:35:12.000000000 
+0100
@@ -48,12 +48,6 @@
       # pypy3:
       #   python.version: 'pypy3'
       #   tox.env: 'pypy3'
-      py34-xdist:
-        python.version: '3.4'
-        tox.env: 'py34-xdist'
-        # Coverage for:
-        # - _pytest.compat._bytes_to_ascii
-        PYTEST_COVERAGE: '1'
       py35-xdist:
         python.version: '3.5'
         tox.env: 'py35-xdist'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/codecov.yml new/pytest-4.6.9/codecov.yml
--- old/pytest-4.6.6/codecov.yml        1970-01-01 01:00:00.000000000 +0100
+++ new/pytest-4.6.9/codecov.yml        2020-01-04 21:35:12.000000000 +0100
@@ -0,0 +1,7 @@
+coverage:
+  status:
+    project: true
+    patch: true
+    changes: true
+
+comment: off
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/doc/en/announce/index.rst 
new/pytest-4.6.9/doc/en/announce/index.rst
--- old/pytest-4.6.6/doc/en/announce/index.rst  2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/doc/en/announce/index.rst  2020-01-04 21:35:12.000000000 
+0100
@@ -6,6 +6,9 @@
    :maxdepth: 2
 
 
+   release-4.6.9
+   release-4.6.8
+   release-4.6.7
    release-4.6.6
    release-4.6.5
    release-4.6.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/doc/en/announce/release-4.6.7.rst 
new/pytest-4.6.9/doc/en/announce/release-4.6.7.rst
--- old/pytest-4.6.6/doc/en/announce/release-4.6.7.rst  1970-01-01 
01:00:00.000000000 +0100
+++ new/pytest-4.6.9/doc/en/announce/release-4.6.7.rst  2020-01-04 
21:35:12.000000000 +0100
@@ -0,0 +1,19 @@
+pytest-4.6.7
+=======================================
+
+pytest 4.6.7 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:
+
+* Bruno Oliveira
+* Daniel Hahler
+
+
+Happy testing,
+The pytest Development Team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/doc/en/announce/release-4.6.8.rst 
new/pytest-4.6.9/doc/en/announce/release-4.6.8.rst
--- old/pytest-4.6.6/doc/en/announce/release-4.6.8.rst  1970-01-01 
01:00:00.000000000 +0100
+++ new/pytest-4.6.9/doc/en/announce/release-4.6.8.rst  2020-01-04 
21:35:12.000000000 +0100
@@ -0,0 +1,20 @@
+pytest-4.6.8
+=======================================
+
+pytest 4.6.8 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
+* Ryan Mast
+
+
+Happy testing,
+The pytest Development Team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/doc/en/announce/release-4.6.9.rst 
new/pytest-4.6.9/doc/en/announce/release-4.6.9.rst
--- old/pytest-4.6.6/doc/en/announce/release-4.6.9.rst  1970-01-01 
01:00:00.000000000 +0100
+++ new/pytest-4.6.9/doc/en/announce/release-4.6.9.rst  2020-01-04 
21:35:12.000000000 +0100
@@ -0,0 +1,21 @@
+pytest-4.6.9
+=======================================
+
+pytest 4.6.9 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
+* Felix Yan
+* Hugo
+
+
+Happy testing,
+The pytest Development Team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/doc/en/conf.py 
new/pytest-4.6.9/doc/en/conf.py
--- old/pytest-4.6.6/doc/en/conf.py     2019-10-13 16:54:01.000000000 +0200
+++ new/pytest-4.6.9/doc/en/conf.py     2020-01-04 21:35:12.000000000 +0100
@@ -65,7 +65,7 @@
 # General information about the project.
 project = u"pytest"
 year = datetime.datetime.utcnow().year
-copyright = u"2015–2019 , holger krekel and pytest-dev team"
+copyright = u"2015–2020, holger krekel and pytest-dev team"
 
 
 # The language for content autogenerated by Sphinx. Refer to documentation
@@ -275,7 +275,7 @@
 epub_title = u"pytest"
 epub_author = u"holger krekel at merlinux eu"
 epub_publisher = u"holger krekel at merlinux eu"
-epub_copyright = u"2013, holger krekel et alii"
+epub_copyright = u"2013-2020, holger krekel et alii"
 
 # The language of the text. It defaults to the language option
 # or en if the language is not set.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/doc/en/example/parametrize.rst 
new/pytest-4.6.9/doc/en/example/parametrize.rst
--- old/pytest-4.6.6/doc/en/example/parametrize.rst     2019-10-13 
16:54:01.000000000 +0200
+++ new/pytest-4.6.9/doc/en/example/parametrize.rst     2020-01-04 
21:35:12.000000000 +0100
@@ -434,11 +434,10 @@
 .. code-block:: pytest
 
    . $ pytest -rs -q multipython.py
-   ...ssssssssssssssssssssssss                                          [100%]
+   ......sss......ssssssssssss                                          [100%]
    ========================= short test summary info ==========================
-   SKIPPED [12] $REGENDOC_TMPDIR/CWD/multipython.py:31: 'python3.4' not found
-   SKIPPED [12] $REGENDOC_TMPDIR/CWD/multipython.py:31: 'python3.5' not found
-   3 passed, 24 skipped in 0.12 seconds
+   SKIPPED [15] $REGENDOC_TMPDIR/CWD/multipython.py:31: 'python3.5' not found
+   12 passed, 15 skipped in 0.12 seconds
 
 Indirect parametrization of optional implementations/imports
 --------------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/doc/en/example/reportingdemo.rst 
new/pytest-4.6.9/doc/en/example/reportingdemo.rst
--- old/pytest-4.6.6/doc/en/example/reportingdemo.rst   2019-10-13 
16:54:01.000000000 +0200
+++ new/pytest-4.6.9/doc/en/example/reportingdemo.rst   2020-01-04 
21:35:12.000000000 +0100
@@ -436,7 +436,7 @@
             items = [1, 2, 3]
             print("items is %r" % items)
     >       a, b = items.pop()
-    E       TypeError: cannot unpack non-iterable int object
+    E       TypeError: 'int' object is not iterable
 
     failure_demo.py:182: TypeError
     --------------------------- Captured stdout call 
---------------------------
@@ -515,7 +515,7 @@
         def test_z2_type_error(self):
             items = 3
     >       a, b = items
-    E       TypeError: cannot unpack non-iterable int object
+    E       TypeError: 'int' object is not iterable
 
     failure_demo.py:222: TypeError
     ______________________ TestMoreErrors.test_startswith 
______________________
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/doc/en/getting-started.rst 
new/pytest-4.6.9/doc/en/getting-started.rst
--- old/pytest-4.6.6/doc/en/getting-started.rst 2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/doc/en/getting-started.rst 2020-01-04 21:35:12.000000000 
+0100
@@ -28,7 +28,7 @@
 .. code-block:: bash
 
     $ pytest --version
-    This is pytest version 4.x.y, imported from 
$PYTHON_PREFIX/lib/python3.7/site-packages/pytest.py
+    This is pytest version 4.x.y, imported from 
$PYTHON_PREFIX/lib/python3.6/site-packages/pytest.py
 
 .. _`simpletest`:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/doc/en/index.rst 
new/pytest-4.6.9/doc/en/index.rst
--- old/pytest-4.6.6/doc/en/index.rst   2019-10-13 16:54:01.000000000 +0200
+++ new/pytest-4.6.9/doc/en/index.rst   2020-01-04 21:35:12.000000000 +0100
@@ -87,7 +87,7 @@
 License
 -------
 
-Copyright Holger Krekel and others, 2004-2017.
+Copyright Holger Krekel and others, 2004-2020.
 
 Distributed under the terms of the `MIT`_ license, pytest is free and open 
source software.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/doc/en/license.rst 
new/pytest-4.6.9/doc/en/license.rst
--- old/pytest-4.6.6/doc/en/license.rst 2019-10-13 16:54:01.000000000 +0200
+++ new/pytest-4.6.9/doc/en/license.rst 2020-01-04 21:35:12.000000000 +0100
@@ -9,7 +9,7 @@
 
     The MIT License (MIT)
 
-    Copyright (c) 2004-2017 Holger Krekel and others
+    Copyright (c) 2004-2020 Holger Krekel and others
 
     Permission is hereby granted, free of charge, to any person obtaining a 
copy of
     this software and associated documentation files (the "Software"), to deal 
in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/setup.py new/pytest-4.6.9/setup.py
--- old/pytest-4.6.6/setup.py   2019-10-13 16:54:01.000000000 +0200
+++ new/pytest-4.6.9/setup.py   2020-01-04 21:35:12.000000000 +0100
@@ -13,7 +13,8 @@
     "atomicwrites>=1.0",
     'funcsigs>=1.0;python_version<"3.0"',
     'pathlib2>=2.2.0;python_version<"3.6"',
-    'colorama;sys_platform=="win32"',
+    'colorama<=0.4.1;sys_platform=="win32" and python_version=="3.4"',
+    'colorama;sys_platform=="win32" and python_version!="3.4"',
     "pluggy>=0.12,<1.0",
     'importlib-metadata>=0.12;python_version<"3.8"',
     "wcwidth",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/src/_pytest/_version.py 
new/pytest-4.6.9/src/_pytest/_version.py
--- old/pytest-4.6.6/src/_pytest/_version.py    2019-10-13 16:54:20.000000000 
+0200
+++ new/pytest-4.6.9/src/_pytest/_version.py    2020-01-04 21:35:29.000000000 
+0100
@@ -1,4 +1,4 @@
 # coding: utf-8
 # file generated by setuptools_scm
 # don't change, don't track in version control
-version = '4.6.6'
+version = '4.6.9'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/src/_pytest/config/__init__.py 
new/pytest-4.6.9/src/_pytest/config/__init__.py
--- old/pytest-4.6.6/src/_pytest/config/__init__.py     2019-10-13 
16:54:01.000000000 +0200
+++ new/pytest-4.6.9/src/_pytest/config/__init__.py     2020-01-04 
21:35:12.000000000 +0100
@@ -116,13 +116,13 @@
 
 
 # Plugins that cannot be disabled via "-p no:X" currently.
-essential_plugins = (  # fmt: off
+essential_plugins = (
     "mark",
     "main",
     "runner",
     "fixtures",
     "helpconfig",  # Provides -p.
-)  # fmt: on
+)
 
 default_plugins = essential_plugins + (
     "python",
@@ -622,16 +622,68 @@
 
 
 def _iter_rewritable_modules(package_files):
+    """
+    Given an iterable of file names in a source distribution, return the 
"names" that should
+    be marked for assertion rewrite (for example the package 
"pytest_mock/__init__.py" should
+    be added as "pytest_mock" in the assertion rewrite mechanism.
+
+    This function has to deal with dist-info based distributions and egg based 
distributions
+    (which are still very much in use for "editable" installs).
+
+    Here are the file names as seen in a dist-info based distribution:
+
+        pytest_mock/__init__.py
+        pytest_mock/_version.py
+        pytest_mock/plugin.py
+        pytest_mock.egg-info/PKG-INFO
+
+    Here are the file names as seen in an egg based distribution:
+
+        src/pytest_mock/__init__.py
+        src/pytest_mock/_version.py
+        src/pytest_mock/plugin.py
+        src/pytest_mock.egg-info/PKG-INFO
+        LICENSE
+        setup.py
+
+    We have to take in account those two distribution flavors in order to 
determine which
+    names should be considered for assertion rewriting.
+
+    More information:
+        https://github.com/pytest-dev/pytest-mock/issues/167
+    """
+    package_files = list(package_files)
+    seen_some = False
     for fn in package_files:
         is_simple_module = "/" not in fn and fn.endswith(".py")
         is_package = fn.count("/") == 1 and fn.endswith("__init__.py")
         if is_simple_module:
             module_name, _ = os.path.splitext(fn)
-            yield module_name
+            # we ignore "setup.py" at the root of the distribution
+            if module_name != "setup":
+                seen_some = True
+                yield module_name
         elif is_package:
             package_name = os.path.dirname(fn)
+            seen_some = True
             yield package_name
 
+    if not seen_some:
+        # at this point we did not find any packages or modules suitable for 
assertion
+        # rewriting, so we try again by stripping the first path component (to 
account for
+        # "src" based source trees for example)
+        # this approach lets us have the common case continue to be fast, as 
egg-distributions
+        # are rarer
+        new_package_files = []
+        for fn in package_files:
+            parts = fn.split("/")
+            new_fn = "/".join(parts[1:])
+            if new_fn:
+                new_package_files.append(new_fn)
+        if new_package_files:
+            for _module in _iter_rewritable_modules(new_package_files):
+                yield _module
+
 
 class Config(object):
     """ access to configuration values, pluginmanager and plugin hooks.  """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/src/_pytest/junitxml.py 
new/pytest-4.6.9/src/_pytest/junitxml.py
--- old/pytest-4.6.6/src/_pytest/junitxml.py    2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/src/_pytest/junitxml.py    2020-01-04 21:35:12.000000000 
+0100
@@ -15,9 +15,11 @@
 
 import functools
 import os
+import platform
 import re
 import sys
 import time
+from datetime import datetime
 
 import py
 import six
@@ -595,6 +597,8 @@
             if report.when == "call":
                 reporter.append_failure(report)
                 self.open_reports.append(report)
+                if not self.log_passing_tests:
+                    reporter.write_captured_output(report)
             else:
                 reporter.append_error(report)
         elif report.skipped:
@@ -667,18 +671,19 @@
         )
         logfile.write('<?xml version="1.0" encoding="utf-8"?>')
 
-        logfile.write(
-            Junit.testsuite(
-                self._get_global_properties_node(),
-                [x.to_xml() for x in self.node_reporters_ordered],
-                name=self.suite_name,
-                errors=self.stats["error"],
-                failures=self.stats["failure"],
-                skipped=self.stats["skipped"],
-                tests=numtests,
-                time="%.3f" % suite_time_delta,
-            ).unicode(indent=0)
+        suite_node = Junit.testsuite(
+            self._get_global_properties_node(),
+            [x.to_xml() for x in self.node_reporters_ordered],
+            name=self.suite_name,
+            errors=self.stats["error"],
+            failures=self.stats["failure"],
+            skipped=self.stats["skipped"],
+            tests=numtests,
+            time="%.3f" % suite_time_delta,
+            
timestamp=datetime.fromtimestamp(self.suite_start_time).isoformat(),
+            hostname=platform.node(),
         )
+        logfile.write(Junit.testsuites([suite_node]).unicode(indent=0))
         logfile.close()
 
     def pytest_terminal_summary(self, terminalreporter):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/src/_pytest/pathlib.py 
new/pytest-4.6.9/src/_pytest/pathlib.py
--- old/pytest-4.6.6/src/_pytest/pathlib.py     2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/src/_pytest/pathlib.py     2020-01-04 21:35:12.000000000 
+0100
@@ -48,24 +48,38 @@
 
 
 def on_rm_rf_error(func, path, exc, **kwargs):
-    """Handles known read-only errors during rmtree."""
+    """Handles known read-only errors during rmtree.
+
+    The returned value is used only by our own tests.
+    """
     start_path = kwargs["start_path"]
-    excvalue = exc[1]
+    exctype, excvalue = exc[:2]
+
+    # another process removed the file in the middle of the "rm_rf" (xdist for 
example)
+    # more context: 
https://github.com/pytest-dev/pytest/issues/5974#issuecomment-543799018
+    if isinstance(excvalue, OSError) and excvalue.errno == errno.ENOENT:
+        return False
 
     if not isinstance(excvalue, OSError) or excvalue.errno not in (
         errno.EACCES,
         errno.EPERM,
     ):
         warnings.warn(
-            PytestWarning("(rm_rf) error removing {}: {}".format(path, 
excvalue))
+            PytestWarning(
+                "(rm_rf) error removing {}\n{}: {}".format(path, exctype, 
excvalue)
+            )
         )
-        return
+        return False
 
     if func not in (os.rmdir, os.remove, os.unlink):
         warnings.warn(
-            PytestWarning("(rm_rf) error removing {}: {}".format(path, 
excvalue))
+            PytestWarning(
+                "(rm_rf) unknown function {} when removing {}:\n{}: {}".format(
+                    path, func, exctype, excvalue
+                )
+            )
         )
-        return
+        return False
 
     # Chmod + retry.
     import stat
@@ -86,6 +100,7 @@
     chmod_rw(str(path))
 
     func(path)
+    return True
 
 
 def rm_rf(path):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/src/_pytest/python_api.py 
new/pytest-4.6.9/src/_pytest/python_api.py
--- old/pytest-4.6.6/src/_pytest/python_api.py  2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/src/_pytest/python_api.py  2020-01-04 21:35:12.000000000 
+0100
@@ -694,7 +694,7 @@
         return RaisesContext(expected_exception, message, match_expr)
     elif isinstance(args[0], str):
         warnings.warn(deprecated.RAISES_EXEC, stacklevel=2)
-        code, = args
+        (code,) = args
         assert isinstance(code, str)
         frame = sys._getframe(1)
         loc = frame.f_locals.copy()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/src/_pytest/recwarn.py 
new/pytest-4.6.9/src/_pytest/recwarn.py
--- old/pytest-4.6.6/src/_pytest/recwarn.py     2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/src/_pytest/recwarn.py     2020-01-04 21:35:12.000000000 
+0100
@@ -95,7 +95,7 @@
         return WarningsChecker(expected_warning, match_expr=match_expr)
     elif isinstance(args[0], str):
         warnings.warn(WARNS_EXEC, stacklevel=2)
-        code, = args
+        (code,) = args
         assert isinstance(code, str)
         frame = sys._getframe(1)
         loc = frame.f_locals.copy()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/src/pytest.egg-info/PKG-INFO 
new/pytest-4.6.9/src/pytest.egg-info/PKG-INFO
--- old/pytest-4.6.6/src/pytest.egg-info/PKG-INFO       2019-10-13 
16:54:20.000000000 +0200
+++ new/pytest-4.6.9/src/pytest.egg-info/PKG-INFO       2020-01-04 
21:35:29.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pytest
-Version: 4.6.6
+Version: 4.6.9
 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
@@ -140,7 +140,7 @@
         License
         -------
         
-        Copyright Holger Krekel and others, 2004-2019.
+        Copyright Holger Krekel and others, 2004-2020.
         
         Distributed under the terms of the `MIT`_ license, pytest is free and 
open source software.
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/src/pytest.egg-info/SOURCES.txt 
new/pytest-4.6.9/src/pytest.egg-info/SOURCES.txt
--- old/pytest-4.6.6/src/pytest.egg-info/SOURCES.txt    2019-10-13 
16:54:20.000000000 +0200
+++ new/pytest-4.6.9/src/pytest.egg-info/SOURCES.txt    2020-01-04 
21:35:29.000000000 +0100
@@ -12,6 +12,7 @@
 README.rst
 TIDELIFT.rst
 azure-pipelines.yml
+codecov.yml
 pyproject.toml
 setup.cfg
 setup.py
@@ -200,6 +201,9 @@
 doc/en/announce/release-4.6.4.rst
 doc/en/announce/release-4.6.5.rst
 doc/en/announce/release-4.6.6.rst
+doc/en/announce/release-4.6.7.rst
+doc/en/announce/release-4.6.8.rst
+doc/en/announce/release-4.6.9.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-4.6.6/src/pytest.egg-info/requires.txt 
new/pytest-4.6.9/src/pytest.egg-info/requires.txt
--- old/pytest-4.6.6/src/pytest.egg-info/requires.txt   2019-10-13 
16:54:20.000000000 +0200
+++ new/pytest-4.6.9/src/pytest.egg-info/requires.txt   2020-01-04 
21:35:29.000000000 +0100
@@ -21,9 +21,12 @@
 [:python_version > "2.7"]
 more-itertools>=4.0.0
 
-[:sys_platform == "win32"]
+[:sys_platform == "win32" and python_version != "3.4"]
 colorama
 
+[:sys_platform == "win32" and python_version == "3.4"]
+colorama<=0.4.1
+
 [testing]
 argcomplete
 hypothesis>=3.56
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/testing/deprecated_test.py 
new/pytest-4.6.9/testing/deprecated_test.py
--- old/pytest-4.6.6/testing/deprecated_test.py 2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/testing/deprecated_test.py 2020-01-04 21:35:12.000000000 
+0100
@@ -152,7 +152,7 @@
 
 
 def 
test_pytest_plugins_in_non_top_level_conftest_unsupported_no_top_level_conftest(
-    testdir
+    testdir,
 ):
     from _pytest.deprecated import PYTEST_PLUGINS_FROM_NON_TOP_LEVEL_CONFTEST
 
@@ -181,7 +181,7 @@
 
 
 def 
test_pytest_plugins_in_non_top_level_conftest_unsupported_no_false_positives(
-    testdir
+    testdir,
 ):
     from _pytest.deprecated import PYTEST_PLUGINS_FROM_NON_TOP_LEVEL_CONFTEST
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/testing/python/fixtures.py 
new/pytest-4.6.9/testing/python/fixtures.py
--- old/pytest-4.6.6/testing/python/fixtures.py 2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/testing/python/fixtures.py 2020-01-04 21:35:12.000000000 
+0100
@@ -464,7 +464,7 @@
         assert repr(req).find(req.function.__name__) != -1
 
     def test_request_attributes_method(self, testdir):
-        item, = testdir.getitems(
+        (item,) = testdir.getitems(
             """
             import pytest
             class TestB(object):
@@ -492,7 +492,7 @@
                     pass
         """
         )
-        item1, = testdir.genitems([modcol])
+        (item1,) = testdir.genitems([modcol])
         assert item1.name == "test_method"
         arg2fixturedefs = fixtures.FixtureRequest(item1)._arg2fixturedefs
         assert len(arg2fixturedefs) == 1
@@ -756,7 +756,7 @@
 
     def test_request_getmodulepath(self, testdir):
         modcol = testdir.getmodulecol("def test_somefunc(): pass")
-        item, = testdir.genitems([modcol])
+        (item,) = testdir.genitems([modcol])
         req = fixtures.FixtureRequest(item)
         assert req.fspath == modcol.fspath
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/testing/test_collection.py 
new/pytest-4.6.9/testing/test_collection.py
--- old/pytest-4.6.6/testing/test_collection.py 2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/testing/test_collection.py 2020-01-04 21:35:12.000000000 
+0100
@@ -494,7 +494,7 @@
         p = testdir.makepyfile("def test_func(): pass")
         id = "::".join([p.basename, "test_func"])
         items, hookrec = testdir.inline_genitems(id)
-        item, = items
+        (item,) = items
         assert item.name == "test_func"
         newid = item.nodeid
         assert newid == id
@@ -613,9 +613,9 @@
         testdir.makepyfile("def test_func(): pass")
         items, hookrec = testdir.inline_genitems()
         assert len(items) == 1
-        item, = items
+        (item,) = items
         items2, hookrec = testdir.inline_genitems(item.nodeid)
-        item2, = items2
+        (item2,) = items2
         assert item2.name == item.name
         assert item2.fspath == item.fspath
 
@@ -630,7 +630,7 @@
         arg = p.basename + "::TestClass::test_method"
         items, hookrec = testdir.inline_genitems(arg)
         assert len(items) == 1
-        item, = items
+        (item,) = items
         assert item.nodeid.endswith("TestClass::test_method")
         # ensure we are reporting the collection of the single test item 
(#2464)
         assert [x.name for x in self.get_reported_items(hookrec)] == 
["test_method"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/testing/test_config.py 
new/pytest-4.6.9/testing/test_config.py
--- old/pytest-4.6.6/testing/test_config.py     2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/testing/test_config.py     2020-01-04 21:35:12.000000000 
+0100
@@ -431,15 +431,21 @@
     @pytest.mark.parametrize(
         "names, expected",
         [
+            # dist-info based distributions root are files as will be put in 
PYTHONPATH
             (["bar.py"], ["bar"]),
-            (["foo", "bar.py"], []),
-            (["foo", "bar.pyc"], []),
-            (["foo", "__init__.py"], ["foo"]),
-            (["foo", "bar", "__init__.py"], []),
+            (["foo/bar.py"], ["bar"]),
+            (["foo/bar.pyc"], []),
+            (["foo/__init__.py"], ["foo"]),
+            (["bar/__init__.py", "xz.py"], ["bar", "xz"]),
+            (["setup.py"], []),
+            # egg based distributions root contain the files from the dist root
+            (["src/bar/__init__.py"], ["bar"]),
+            (["src/bar/__init__.py", "setup.py"], ["bar"]),
+            (["source/python/bar/__init__.py", "setup.py"], ["bar"]),
         ],
     )
     def test_iter_rewritable_modules(self, names, expected):
-        assert list(_iter_rewritable_modules(["/".join(names)])) == expected
+        assert list(_iter_rewritable_modules(names)) == expected
 
 
 class TestConfigFromdictargs(object):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/testing/test_junitxml.py 
new/pytest-4.6.9/testing/test_junitxml.py
--- old/pytest-4.6.6/testing/test_junitxml.py   2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/testing/test_junitxml.py   2020-01-04 21:35:12.000000000 
+0100
@@ -4,7 +4,9 @@
 from __future__ import print_function
 
 import os
+import platform
 import sys
+from datetime import datetime
 from xml.dom import minidom
 
 import py
@@ -47,6 +49,16 @@
     def _by_tag(self, tag):
         return self.__node.getElementsByTagName(tag)
 
+    @property
+    def children(self):
+        return [type(self)(x) for x in self.__node.childNodes]
+
+    @property
+    def get_unique_child(self):
+        children = self.children
+        assert len(children) == 1
+        return children[0]
+
     def find_nth_by_tag(self, tag, n):
         items = self._by_tag(tag)
         try:
@@ -81,7 +93,7 @@
         return self.__node.tagName
 
     @property
-    def next_siebling(self):
+    def next_sibling(self):
         return type(self)(self.__node.nextSibling)
 
 
@@ -135,6 +147,30 @@
         node = dom.find_first_by_tag("testsuite")
         node.assert_attr(name="pytest", errors=1, failures=2, skipped=1, 
tests=5)
 
+    def test_hostname_in_xml(self, testdir):
+        testdir.makepyfile(
+            """
+            def test_pass():
+                pass
+        """
+        )
+        result, dom = runandparse(testdir)
+        node = dom.find_first_by_tag("testsuite")
+        node.assert_attr(hostname=platform.node())
+
+    def test_timestamp_in_xml(self, testdir):
+        testdir.makepyfile(
+            """
+            def test_pass():
+                pass
+        """
+        )
+        start_time = datetime.now()
+        result, dom = runandparse(testdir)
+        node = dom.find_first_by_tag("testsuite")
+        timestamp = datetime.strptime(node["timestamp"], 
"%Y-%m-%dT%H:%M:%S.%f")
+        assert start_time <= timestamp < datetime.now()
+
     def test_timing_function(self, testdir):
         testdir.makepyfile(
             """
@@ -390,11 +426,11 @@
         fnode = tnode.find_first_by_tag("failure")
         fnode.assert_attr(message="ValueError: 42")
         assert "ValueError" in fnode.toxml()
-        systemout = fnode.next_siebling
+        systemout = fnode.next_sibling
         assert systemout.tag == "system-out"
         assert "hello-stdout" in systemout.toxml()
         assert "info msg" not in systemout.toxml()
-        systemerr = systemout.next_siebling
+        systemerr = systemout.next_sibling
         assert systemerr.tag == "system-err"
         assert "hello-stderr" in systemerr.toxml()
         assert "info msg" not in systemerr.toxml()
@@ -1101,6 +1137,20 @@
     assert failed == ["test_x[22]"]
 
 
+def test_root_testsuites_tag(testdir):
+    testdir.makepyfile(
+        """
+        def test_x():
+            pass
+    """
+    )
+    _, dom = runandparse(testdir)
+    root = dom.get_unique_child
+    assert root.tag == "testsuites"
+    suite_node = root.get_unique_child
+    assert suite_node.tag == "testsuite"
+
+
 def test_runs_twice(testdir):
     f = testdir.makepyfile(
         """
@@ -1359,3 +1409,39 @@
     node = dom.find_first_by_tag("testcase")
     assert len(node.find_by_tag("system-err")) == 0
     assert len(node.find_by_tag("system-out")) == 0
+
+
[email protected]("junit_logging", ["no", "system-out", "system-err"])
+def test_logging_passing_tests_disabled_logs_output_for_failing_test_issue5430(
+    testdir, junit_logging
+):
+    testdir.makeini(
+        """
+        [pytest]
+        junit_log_passing_tests=False
+    """
+    )
+    testdir.makepyfile(
+        """
+        import pytest
+        import logging
+        import sys
+
+        def test_func():
+            logging.warning('hello')
+            assert 0
+    """
+    )
+    result, dom = runandparse(testdir, "-o", "junit_logging=%s" % 
junit_logging)
+    assert result.ret == 1
+    node = dom.find_first_by_tag("testcase")
+    if junit_logging == "system-out":
+        assert len(node.find_by_tag("system-err")) == 0
+        assert len(node.find_by_tag("system-out")) == 1
+    elif junit_logging == "system-err":
+        assert len(node.find_by_tag("system-err")) == 1
+        assert len(node.find_by_tag("system-out")) == 0
+    else:
+        assert junit_logging == "no"
+        assert len(node.find_by_tag("system-err")) == 0
+        assert len(node.find_by_tag("system-out")) == 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/testing/test_mark.py 
new/pytest-4.6.9/testing/test_mark.py
--- old/pytest-4.6.6/testing/test_mark.py       2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/testing/test_mark.py       2020-01-04 21:35:12.000000000 
+0100
@@ -1008,7 +1008,7 @@
 def test_pytest_param_id_requires_string():
     with pytest.raises(TypeError) as excinfo:
         pytest.param(id=True)
-    msg, = excinfo.value.args
+    (msg,) = excinfo.value.args
     if six.PY2:
         assert msg == "Expected id to be a string, got <type 'bool'>: True"
     else:
@@ -1025,7 +1025,7 @@
         # typo, should be marks=
         pytest.param(1, 2, mark=pytest.mark.xfail())
     assert warninfo[0].filename == __file__
-    msg, = warninfo[0].message.args
+    (msg,) = warninfo[0].message.args
     assert msg == (
         "pytest.param() got unexpected keyword arguments: ['mark'].\n"
         "This will be an error in future versions."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/testing/test_recwarn.py 
new/pytest-4.6.9/testing/test_recwarn.py
--- old/pytest-4.6.6/testing/test_recwarn.py    2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/testing/test_recwarn.py    2020-01-04 21:35:12.000000000 
+0100
@@ -225,7 +225,7 @@
         assert len(warninfo) == 3
         for w in warninfo:
             assert w.filename == __file__
-            msg, = w.message.args
+            (msg,) = w.message.args
             assert msg.startswith("warns(..., 'code(as_a_string)') is 
deprecated")
 
     def test_function(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/testing/test_skipping.py 
new/pytest-4.6.9/testing/test_skipping.py
--- old/pytest-4.6.6/testing/test_skipping.py   2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/testing/test_skipping.py   2020-01-04 21:35:12.000000000 
+0100
@@ -136,7 +136,7 @@
         )
 
     def test_skipif_class(self, testdir):
-        item, = testdir.getitems(
+        (item,) = testdir.getitems(
             """
             import pytest
             class TestClass(object):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/testing/test_tmpdir.py 
new/pytest-4.6.9/testing/test_tmpdir.py
--- old/pytest-4.6.6/testing/test_tmpdir.py     2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/testing/test_tmpdir.py     2020-01-04 21:35:12.000000000 
+0100
@@ -273,7 +273,7 @@
         registry = []
         register_cleanup_lock_removal(lock, register=registry.append)
 
-        cleanup_func, = registry
+        (cleanup_func,) = registry
 
         assert lock.is_file()
 
@@ -398,9 +398,14 @@
             on_rm_rf_error(os.unlink, str(fn), exc_info, start_path=tmp_path)
             assert fn.is_file()
 
+        # we ignore FileNotFoundError
+        file_not_found = OSError()
+        file_not_found.errno = errno.ENOENT
+        exc_info = (None, file_not_found, None)
+        assert not on_rm_rf_error(None, str(fn), exc_info, start_path=tmp_path)
+
         permission_error = OSError()
         permission_error.errno = errno.EACCES
-
         # unknown function
         with pytest.warns(pytest.PytestWarning):
             exc_info = (None, permission_error, None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-4.6.6/testing/test_unittest.py 
new/pytest-4.6.9/testing/test_unittest.py
--- old/pytest-4.6.6/testing/test_unittest.py   2019-10-13 16:54:01.000000000 
+0200
+++ new/pytest-4.6.9/testing/test_unittest.py   2020-01-04 21:35:12.000000000 
+0100
@@ -388,7 +388,7 @@
 
 
 def test_testcase_totally_incompatible_exception_info(testdir):
-    item, = testdir.getitems(
+    (item,) = testdir.getitems(
         """
         from unittest import TestCase
         class MyTestCase(TestCase):


Reply via email to