From c9fd1bdbd6d25917d33b27511d8ebc2a65538899 Mon Sep 17 00:00:00 2001 From: pytest bot Date: Thu, 12 Mar 2020 14:14:35 +0000 Subject: [PATCH] Preparing release version 5.4.0 --- changelog/1857.improvement.rst | 1 - changelog/310.bugfix.rst | 1 - changelog/3238.deprecation.rst | 5 - changelog/3823.bugfix.rst | 1 - changelog/4445.bugfix.rst | 1 - changelog/449.improvement.rst | 1 - changelog/4597.feature.rst | 1 - changelog/4639.improvement.rst | 4 - changelog/5301.bugfix.rst | 1 - changelog/5686.improvement.rst | 1 - changelog/571.deprecation.rst | 3 - changelog/5712.feature.rst | 2 - changelog/5928.bugfix.rst | 1 - changelog/5975.deprecation.rst | 10 -- changelog/5984.improvement.rst | 1 - changelog/5991.bugfix.rst | 1 - changelog/6213.improvement.rst | 1 - changelog/6247.improvement.rst | 1 - changelog/6316.breaking.rst | 1 - changelog/6334.bugfix.rst | 3 - changelog/6384.improvement.rst | 1 - changelog/6404.trivial.rst | 1 - changelog/6409.bugfix.rst | 1 - changelog/6443.breaking.rst | 3 - changelog/6454.bugfix.rst | 1 - changelog/6454.feature.rst | 1 - changelog/6469.feature.rst | 1 - changelog/6497.bugfix.rst | 4 - changelog/6557.bugfix.rst | 1 - changelog/6566.bugfix.rst | 1 - changelog/6575.bugfix.rst | 3 - changelog/6597.bugfix.rst | 1 - changelog/6637.breaking.rst | 3 - changelog/6646.bugfix.rst | 1 - changelog/6653.improvement.rst | 1 - changelog/6658.improvement.rst | 4 - changelog/6660.bugfix.rst | 1 - changelog/6673.breaking.rst | 1 - changelog/6696.doc.rst | 1 - changelog/6737.breaking.rst | 7 - changelog/6742.doc.rst | 1 - changelog/6752.bugfix.rst | 3 - changelog/6779.deprecation.rst | 3 - changelog/6795.improvement.rst | 1 - changelog/6801.bugfix.rst | 1 - changelog/6802.bugfix.rst | 1 - changelog/6834.feature.rst | 1 - changelog/759.improvement.rst | 1 - doc/en/announce/index.rst | 1 + doc/en/announce/release-5.4.0.rst | 59 ++++++++ doc/en/changelog.rst | 217 ++++++++++++++++++++++++++++++ doc/en/example/parametrize.rst | 7 +- doc/en/getting-started.rst | 2 +- doc/en/writing_plugins.rst | 7 +- 54 files changed, 289 insertions(+), 95 deletions(-) delete mode 100644 changelog/1857.improvement.rst delete mode 100644 changelog/310.bugfix.rst delete mode 100644 changelog/3238.deprecation.rst delete mode 100644 changelog/3823.bugfix.rst delete mode 100644 changelog/4445.bugfix.rst delete mode 100644 changelog/449.improvement.rst delete mode 100644 changelog/4597.feature.rst delete mode 100644 changelog/4639.improvement.rst delete mode 100644 changelog/5301.bugfix.rst delete mode 100644 changelog/5686.improvement.rst delete mode 100644 changelog/571.deprecation.rst delete mode 100644 changelog/5712.feature.rst delete mode 100644 changelog/5928.bugfix.rst delete mode 100644 changelog/5975.deprecation.rst delete mode 100644 changelog/5984.improvement.rst delete mode 100644 changelog/5991.bugfix.rst delete mode 100644 changelog/6213.improvement.rst delete mode 100644 changelog/6247.improvement.rst delete mode 100644 changelog/6316.breaking.rst delete mode 100644 changelog/6334.bugfix.rst delete mode 100644 changelog/6384.improvement.rst delete mode 100644 changelog/6404.trivial.rst delete mode 100644 changelog/6409.bugfix.rst delete mode 100644 changelog/6443.breaking.rst delete mode 100644 changelog/6454.bugfix.rst delete mode 100644 changelog/6454.feature.rst delete mode 100644 changelog/6469.feature.rst delete mode 100644 changelog/6497.bugfix.rst delete mode 100644 changelog/6557.bugfix.rst delete mode 100644 changelog/6566.bugfix.rst delete mode 100644 changelog/6575.bugfix.rst delete mode 100644 changelog/6597.bugfix.rst delete mode 100644 changelog/6637.breaking.rst delete mode 100644 changelog/6646.bugfix.rst delete mode 100644 changelog/6653.improvement.rst delete mode 100644 changelog/6658.improvement.rst delete mode 100644 changelog/6660.bugfix.rst delete mode 100644 changelog/6673.breaking.rst delete mode 100644 changelog/6696.doc.rst delete mode 100644 changelog/6737.breaking.rst delete mode 100644 changelog/6742.doc.rst delete mode 100644 changelog/6752.bugfix.rst delete mode 100644 changelog/6779.deprecation.rst delete mode 100644 changelog/6795.improvement.rst delete mode 100644 changelog/6801.bugfix.rst delete mode 100644 changelog/6802.bugfix.rst delete mode 100644 changelog/6834.feature.rst delete mode 100644 changelog/759.improvement.rst create mode 100644 doc/en/announce/release-5.4.0.rst diff --git a/changelog/1857.improvement.rst b/changelog/1857.improvement.rst deleted file mode 100644 index 9a8ce90f54f..00000000000 --- a/changelog/1857.improvement.rst +++ /dev/null @@ -1 +0,0 @@ -``pytest.mark.parametrize`` accepts integers for ``ids`` again, converting it to strings. diff --git a/changelog/310.bugfix.rst b/changelog/310.bugfix.rst deleted file mode 100644 index c9ff7578a29..00000000000 --- a/changelog/310.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Add support for calling `pytest.xfail()` and `pytest.importorskip()` with doctests. diff --git a/changelog/3238.deprecation.rst b/changelog/3238.deprecation.rst deleted file mode 100644 index e4e8f25ea08..00000000000 --- a/changelog/3238.deprecation.rst +++ /dev/null @@ -1,5 +0,0 @@ -Option ``--no-print-logs`` is deprecated and meant to be removed in a future release. If you use ``--no-print-logs``, please try out ``--show-capture`` and -provide feedback. - -``--show-capture`` command-line option was added in ``pytest 3.5.0`` and allows to specify how to -display captured output when tests fail: ``no``, ``stdout``, ``stderr``, ``log`` or ``all`` (the default). diff --git a/changelog/3823.bugfix.rst b/changelog/3823.bugfix.rst deleted file mode 100644 index a653fecdd92..00000000000 --- a/changelog/3823.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -``--trace`` now works with unittests. diff --git a/changelog/4445.bugfix.rst b/changelog/4445.bugfix.rst deleted file mode 100644 index f7583b2bf55..00000000000 --- a/changelog/4445.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fixed some warning reports produced by pytest to point to the correct location of the warning in the user's code. diff --git a/changelog/449.improvement.rst b/changelog/449.improvement.rst deleted file mode 100644 index 12ff81bb5c2..00000000000 --- a/changelog/449.improvement.rst +++ /dev/null @@ -1 +0,0 @@ -Use "yellow" main color with any XPASSED tests. diff --git a/changelog/4597.feature.rst b/changelog/4597.feature.rst deleted file mode 100644 index aac395373d9..00000000000 --- a/changelog/4597.feature.rst +++ /dev/null @@ -1 +0,0 @@ -New :ref:`--capture=tee-sys ` option to allow both live printing and capturing of test output. diff --git a/changelog/4639.improvement.rst b/changelog/4639.improvement.rst deleted file mode 100644 index e18b3b61978..00000000000 --- a/changelog/4639.improvement.rst +++ /dev/null @@ -1,4 +0,0 @@ -Revert "A warning is now issued when assertions are made for ``None``". - -The warning proved to be less useful than initially expected and had quite a -few false positive cases. diff --git a/changelog/5301.bugfix.rst b/changelog/5301.bugfix.rst deleted file mode 100644 index 270a8759ac8..00000000000 --- a/changelog/5301.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fix ``--last-failed`` to collect new tests from files with known failures. diff --git a/changelog/5686.improvement.rst b/changelog/5686.improvement.rst deleted file mode 100644 index e77997d8750..00000000000 --- a/changelog/5686.improvement.rst +++ /dev/null @@ -1 +0,0 @@ -``tmpdir_factory.mktemp`` now fails when given absolute and non-normalized paths. diff --git a/changelog/571.deprecation.rst b/changelog/571.deprecation.rst deleted file mode 100644 index 73750838d5f..00000000000 --- a/changelog/571.deprecation.rst +++ /dev/null @@ -1,3 +0,0 @@ -Deprecate the unused/broken `pytest_collect_directory` hook. -It was misaligned since the removal of the ``Directory`` collector in 2010 -and incorrect/unusable as soon as collection was split from test execution. diff --git a/changelog/5712.feature.rst b/changelog/5712.feature.rst deleted file mode 100644 index 5b4971e4f11..00000000000 --- a/changelog/5712.feature.rst +++ /dev/null @@ -1,2 +0,0 @@ -Now all arguments to ``@pytest.mark.parametrize`` need to be explicitly declared in the function signature or via ``indirect``. -Previously it was possible to omit an argument if a fixture with the same name existed, which was just an accident of implementation and was not meant to be a part of the API. diff --git a/changelog/5928.bugfix.rst b/changelog/5928.bugfix.rst deleted file mode 100644 index fbc53757d84..00000000000 --- a/changelog/5928.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Report ``PytestUnknownMarkWarning`` at the level of the user's code, not ``pytest``'s. diff --git a/changelog/5975.deprecation.rst b/changelog/5975.deprecation.rst deleted file mode 100644 index 257249efe01..00000000000 --- a/changelog/5975.deprecation.rst +++ /dev/null @@ -1,10 +0,0 @@ -Deprecate using direct constructors for ``Nodes``. - -Instead they are new constructed via ``Node.from_parent``. - -This transitional mechanism enables us to detangle the very intensely -entangled ``Node`` relationships by enforcing more controlled creation/configruation patterns. - -As part of that session/config are already disallowed parameters and as we work on the details we might need disallow a few more as well. - -Subclasses are expected to use `super().from_parent` if they intend to expand the creation of `Nodes`. diff --git a/changelog/5984.improvement.rst b/changelog/5984.improvement.rst deleted file mode 100644 index 1a0ad66f74e..00000000000 --- a/changelog/5984.improvement.rst +++ /dev/null @@ -1 +0,0 @@ -The ``pytest_warning_captured`` hook now receives a ``location`` parameter with the code location that generated the warning. diff --git a/changelog/5991.bugfix.rst b/changelog/5991.bugfix.rst deleted file mode 100644 index 5659069da3e..00000000000 --- a/changelog/5991.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fix interaction with ``--pdb`` and unittests: do not use unittest's ``TestCase.debug()``. diff --git a/changelog/6213.improvement.rst b/changelog/6213.improvement.rst deleted file mode 100644 index 735d4455fe5..00000000000 --- a/changelog/6213.improvement.rst +++ /dev/null @@ -1 +0,0 @@ -pytester: the ``testdir`` fixture respects environment settings from the ``monkeypatch`` fixture for inner runs. diff --git a/changelog/6247.improvement.rst b/changelog/6247.improvement.rst deleted file mode 100644 index 6634d6b80ab..00000000000 --- a/changelog/6247.improvement.rst +++ /dev/null @@ -1 +0,0 @@ -``--fulltrace`` is honored with collection errors. diff --git a/changelog/6316.breaking.rst b/changelog/6316.breaking.rst deleted file mode 100644 index 6ab7d871784..00000000000 --- a/changelog/6316.breaking.rst +++ /dev/null @@ -1 +0,0 @@ -Matching of ``-k EXPRESSION`` to test names is now case-insensitive. diff --git a/changelog/6334.bugfix.rst b/changelog/6334.bugfix.rst deleted file mode 100644 index abd4c748b4c..00000000000 --- a/changelog/6334.bugfix.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix summary entries appearing twice when ``f/F`` and ``s/S`` report chars were used at the same time in the ``-r`` command-line option (for example ``-rFf``). - -The upper case variants were never documented and the preferred form should be the lower case. diff --git a/changelog/6384.improvement.rst b/changelog/6384.improvement.rst deleted file mode 100644 index 75d1e605dea..00000000000 --- a/changelog/6384.improvement.rst +++ /dev/null @@ -1 +0,0 @@ -Make `--showlocals` work also with `--tb=short`. diff --git a/changelog/6404.trivial.rst b/changelog/6404.trivial.rst deleted file mode 100644 index 8252098b6a2..00000000000 --- a/changelog/6404.trivial.rst +++ /dev/null @@ -1 +0,0 @@ -Remove usage of ``parser`` module, deprecated in Python 3.9. diff --git a/changelog/6409.bugfix.rst b/changelog/6409.bugfix.rst deleted file mode 100644 index 36e991b4c30..00000000000 --- a/changelog/6409.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fallback to green (instead of yellow) for non-last items without previous passes with colored terminal progress indicator. diff --git a/changelog/6443.breaking.rst b/changelog/6443.breaking.rst deleted file mode 100644 index b39c53014cf..00000000000 --- a/changelog/6443.breaking.rst +++ /dev/null @@ -1,3 +0,0 @@ -Plugins specified with ``-p`` are now loaded after internal plugins, which results in their hooks being called *before* the internal ones. - -This makes the ``-p`` behavior consistent with ``PYTEST_PLUGINS``. diff --git a/changelog/6454.bugfix.rst b/changelog/6454.bugfix.rst deleted file mode 100644 index 370b08b01fb..00000000000 --- a/changelog/6454.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -`--disable-warnings` is honored with `-ra` and `-rA`. diff --git a/changelog/6454.feature.rst b/changelog/6454.feature.rst deleted file mode 100644 index 6cb5a4c79e2..00000000000 --- a/changelog/6454.feature.rst +++ /dev/null @@ -1 +0,0 @@ -Changed default for `-r` to `fE`, which displays failures and errors in the :ref:`short test summary `. `-rN` can be used to disable it (the old behavior). diff --git a/changelog/6469.feature.rst b/changelog/6469.feature.rst deleted file mode 100644 index 3a2cfb0e03a..00000000000 --- a/changelog/6469.feature.rst +++ /dev/null @@ -1 +0,0 @@ -New options have been added to the :confval:`junit_logging` option: ``log``, ``out-err``, and ``all``. diff --git a/changelog/6497.bugfix.rst b/changelog/6497.bugfix.rst deleted file mode 100644 index 66d436abd99..00000000000 --- a/changelog/6497.bugfix.rst +++ /dev/null @@ -1,4 +0,0 @@ -Fix bug in the comparison of request key with cached key in fixture. - -A construct ``if key == cached_key:`` can fail either because ``==`` is explicitly disallowed, or for, e.g., NumPy arrays, where the result of ``a == b`` cannot generally be converted to `bool`. -The implemented fix replaces `==` with ``is``. diff --git a/changelog/6557.bugfix.rst b/changelog/6557.bugfix.rst deleted file mode 100644 index fb7527d9960..00000000000 --- a/changelog/6557.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Make capture output streams ``.write()`` method return the same return value from original streams. diff --git a/changelog/6566.bugfix.rst b/changelog/6566.bugfix.rst deleted file mode 100644 index 4af976f2268..00000000000 --- a/changelog/6566.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fix ``EncodedFile.writelines`` to call the underlying buffer's ``writelines`` method. diff --git a/changelog/6575.bugfix.rst b/changelog/6575.bugfix.rst deleted file mode 100644 index 0fdfb64b3ba..00000000000 --- a/changelog/6575.bugfix.rst +++ /dev/null @@ -1,3 +0,0 @@ -Fix internal crash when ``faulthandler`` starts initialized -(for example with ``PYTHONFAULTHANDLER=1`` environment variable set) and ``faulthandler_timeout`` defined -in the configuration file. diff --git a/changelog/6597.bugfix.rst b/changelog/6597.bugfix.rst deleted file mode 100644 index e5af13a0ba4..00000000000 --- a/changelog/6597.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Fix node ids which contain a parametrized empty-string variable. diff --git a/changelog/6637.breaking.rst b/changelog/6637.breaking.rst deleted file mode 100644 index d88282ae39d..00000000000 --- a/changelog/6637.breaking.rst +++ /dev/null @@ -1,3 +0,0 @@ -Removed the long-deprecated ``pytest_itemstart`` hook. - -This hook has been marked as deprecated and not been even called by pytest for over 10 years now. diff --git a/changelog/6646.bugfix.rst b/changelog/6646.bugfix.rst deleted file mode 100644 index 4dba3ed0723..00000000000 --- a/changelog/6646.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Assertion rewriting hooks are (re)stored for the current item, which fixes them being still used after e.g. pytester's :func:`testdir.runpytest <_pytest.pytester.Testdir.runpytest>` etc. diff --git a/changelog/6653.improvement.rst b/changelog/6653.improvement.rst deleted file mode 100644 index 4c081e6730c..00000000000 --- a/changelog/6653.improvement.rst +++ /dev/null @@ -1 +0,0 @@ -Add support for matching lines consecutively with :attr:`LineMatcher <_pytest.pytester.LineMatcher>`'s :func:`~_pytest.pytester.LineMatcher.fnmatch_lines` and :func:`~_pytest.pytester.LineMatcher.re_match_lines`. diff --git a/changelog/6658.improvement.rst b/changelog/6658.improvement.rst deleted file mode 100644 index 56b21f7e208..00000000000 --- a/changelog/6658.improvement.rst +++ /dev/null @@ -1,4 +0,0 @@ -Code is now highlighted in tracebacks when ``pygments`` is installed. - -Users are encouraged to install ``pygments`` into their environment and provide feedback, because -the plan is to make ``pygments`` a regular dependency in the future. diff --git a/changelog/6660.bugfix.rst b/changelog/6660.bugfix.rst deleted file mode 100644 index bcc2e1d9467..00000000000 --- a/changelog/6660.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -:func:`pytest.exit() <_pytest.outcomes.exit>` is handled when emitted from the :func:`pytest_sessionfinish <_pytest.hookspec.pytest_sessionfinish>` hook. This includes quitting from a debugger. diff --git a/changelog/6673.breaking.rst b/changelog/6673.breaking.rst deleted file mode 100644 index d64305eb68a..00000000000 --- a/changelog/6673.breaking.rst +++ /dev/null @@ -1 +0,0 @@ -Reversed / fix meaning of "+/-" in error diffs. "-" means that sth. expected is missing in the result and "+" means that there are unexpected extras in the result. diff --git a/changelog/6696.doc.rst b/changelog/6696.doc.rst deleted file mode 100644 index aaa97cc4d56..00000000000 --- a/changelog/6696.doc.rst +++ /dev/null @@ -1 +0,0 @@ -Add list of fixtures to start of fixture chapter. diff --git a/changelog/6737.breaking.rst b/changelog/6737.breaking.rst deleted file mode 100644 index e024658ba49..00000000000 --- a/changelog/6737.breaking.rst +++ /dev/null @@ -1,7 +0,0 @@ -The ``cached_result`` attribute of ``FixtureDef`` is now set to ``None`` when -the result is unavailable, instead of being deleted. - -If your plugin performs checks like ``hasattr(fixturedef, 'cached_result')``, -for example in a ``pytest_fixture_post_finalizer`` hook implementation, replace -it with ``fixturedef.cached_result is not None``. If you ``del`` the attribute, -set it to ``None`` instead. diff --git a/changelog/6742.doc.rst b/changelog/6742.doc.rst deleted file mode 100644 index b33d1623953..00000000000 --- a/changelog/6742.doc.rst +++ /dev/null @@ -1 +0,0 @@ -Expand first sentence on fixtures into a paragraph. diff --git a/changelog/6752.bugfix.rst b/changelog/6752.bugfix.rst deleted file mode 100644 index 510ea8d7dc9..00000000000 --- a/changelog/6752.bugfix.rst +++ /dev/null @@ -1,3 +0,0 @@ -When :py:func:`pytest.raises` is used as a function (as opposed to a context manager), -a `match` keyword argument is now passed through to the tested function. Previously -it was swallowed and ignored (regression in pytest 5.1.0). diff --git a/changelog/6779.deprecation.rst b/changelog/6779.deprecation.rst deleted file mode 100644 index d722695da14..00000000000 --- a/changelog/6779.deprecation.rst +++ /dev/null @@ -1,3 +0,0 @@ -The ``TerminalReporter.writer`` attribute has been deprecated and should no longer be used. This -was inadvertently exposed as part of the public API of that plugin and ties it too much -with ``py.io.TerminalWriter``. diff --git a/changelog/6795.improvement.rst b/changelog/6795.improvement.rst deleted file mode 100644 index b1fd70d8a2c..00000000000 --- a/changelog/6795.improvement.rst +++ /dev/null @@ -1 +0,0 @@ -Import usage error message with invalid `-o` option. diff --git a/changelog/6801.bugfix.rst b/changelog/6801.bugfix.rst deleted file mode 100644 index 0523f304e66..00000000000 --- a/changelog/6801.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -Do not display empty lines inbetween traceback for unexpected exceptions with doctests. diff --git a/changelog/6802.bugfix.rst b/changelog/6802.bugfix.rst deleted file mode 100644 index af9ebef3a39..00000000000 --- a/changelog/6802.bugfix.rst +++ /dev/null @@ -1 +0,0 @@ -The :fixture:`testdir fixture ` works within doctests now. diff --git a/changelog/6834.feature.rst b/changelog/6834.feature.rst deleted file mode 100644 index 506814ef6e1..00000000000 --- a/changelog/6834.feature.rst +++ /dev/null @@ -1 +0,0 @@ -Excess warning summaries are now collapsed per file to ensure readable display of warning summaries. diff --git a/changelog/759.improvement.rst b/changelog/759.improvement.rst deleted file mode 100644 index 83ace7485e2..00000000000 --- a/changelog/759.improvement.rst +++ /dev/null @@ -1 +0,0 @@ -``pytest.mark.parametrize`` supports iterators and generators for ``ids``. diff --git a/doc/en/announce/index.rst b/doc/en/announce/index.rst index a35039587fa..3bb3b0b9ec9 100644 --- a/doc/en/announce/index.rst +++ b/doc/en/announce/index.rst @@ -6,6 +6,7 @@ Release announcements :maxdepth: 2 + release-5.4.0 release-5.3.5 release-5.3.4 release-5.3.3 diff --git a/doc/en/announce/release-5.4.0.rst b/doc/en/announce/release-5.4.0.rst new file mode 100644 index 00000000000..a89c3ca6bc7 --- /dev/null +++ b/doc/en/announce/release-5.4.0.rst @@ -0,0 +1,59 @@ +pytest-5.4.0 +======================================= + +The pytest team is proud to announce the 5.4.0 release! + +pytest is a mature Python testing tool with more than a 2000 tests +against itself, passing on many different interpreters and platforms. + +This release contains a number of bug fixes and improvements, so users are encouraged +to take a look at the CHANGELOG: + + https://docs.pytest.org/en/latest/changelog.html + +For complete documentation, please visit: + + https://docs.pytest.org/en/latest/ + +As usual, you can upgrade from PyPI via: + + pip install -U pytest + +Thanks to all who contributed to this release, among them: + +* Anthony Sottile +* Bruno Oliveira +* Christoph Buelter +* Christoph Bülter +* Daniel Arndt +* Daniel Hahler +* Holger Kohr +* Hugo +* Hugo van Kemenade +* Jakub Mitoraj +* Kyle Altendorf +* Minuddin Ahmed Rana +* Nathaniel Compton +* ParetoLife +* Pauli Virtanen +* Philipp Loose +* Ran Benita +* Ronny Pfannschmidt +* Stefan Scherfke +* Stefano Mazzucco +* TWood67 +* Tobias Schmidt +* Tomáš Gavenčiak +* Vinay Calastry +* Vladyslav Rachek +* Zac Hatfield-Dodds +* captainCapitalism +* cmachalo +* gftea +* kpinc +* rebecca-palmer +* sdementen + + +Happy testing, +The pytest Development Team diff --git a/doc/en/changelog.rst b/doc/en/changelog.rst index 09c7e82b0b0..8f6d140c1be 100644 --- a/doc/en/changelog.rst +++ b/doc/en/changelog.rst @@ -28,6 +28,223 @@ with advance notice in the **Deprecations** section of releases. .. towncrier release notes start +pytest 5.4.0 (2020-03-12) +========================= + +Breaking Changes +---------------- + +- `#6316 `_: Matching of ``-k EXPRESSION`` to test names is now case-insensitive. + + +- `#6443 `_: Plugins specified with ``-p`` are now loaded after internal plugins, which results in their hooks being called *before* the internal ones. + + This makes the ``-p`` behavior consistent with ``PYTEST_PLUGINS``. + + +- `#6637 `_: Removed the long-deprecated ``pytest_itemstart`` hook. + + This hook has been marked as deprecated and not been even called by pytest for over 10 years now. + + +- `#6673 `_: Reversed / fix meaning of "+/-" in error diffs. "-" means that sth. expected is missing in the result and "+" means that there are unexpected extras in the result. + + +- `#6737 `_: The ``cached_result`` attribute of ``FixtureDef`` is now set to ``None`` when + the result is unavailable, instead of being deleted. + + If your plugin performs checks like ``hasattr(fixturedef, 'cached_result')``, + for example in a ``pytest_fixture_post_finalizer`` hook implementation, replace + it with ``fixturedef.cached_result is not None``. If you ``del`` the attribute, + set it to ``None`` instead. + + + +Deprecations +------------ + +- `#3238 `_: Option ``--no-print-logs`` is deprecated and meant to be removed in a future release. If you use ``--no-print-logs``, please try out ``--show-capture`` and + provide feedback. + + ``--show-capture`` command-line option was added in ``pytest 3.5.0`` and allows to specify how to + display captured output when tests fail: ``no``, ``stdout``, ``stderr``, ``log`` or ``all`` (the default). + + +- `#571 `_: Deprecate the unused/broken `pytest_collect_directory` hook. + It was misaligned since the removal of the ``Directory`` collector in 2010 + and incorrect/unusable as soon as collection was split from test execution. + + +- `#5975 `_: Deprecate using direct constructors for ``Nodes``. + + Instead they are new constructed via ``Node.from_parent``. + + This transitional mechanism enables us to detangle the very intensely + entangled ``Node`` relationships by enforcing more controlled creation/configruation patterns. + + As part of that session/config are already disallowed parameters and as we work on the details we might need disallow a few more as well. + + Subclasses are expected to use `super().from_parent` if they intend to expand the creation of `Nodes`. + + +- `#6779 `_: The ``TerminalReporter.writer`` attribute has been deprecated and should no longer be used. This + was inadvertently exposed as part of the public API of that plugin and ties it too much + with ``py.io.TerminalWriter``. + + + +Features +-------- + +- `#4597 `_: New :ref:`--capture=tee-sys ` option to allow both live printing and capturing of test output. + + +- `#5712 `_: Now all arguments to ``@pytest.mark.parametrize`` need to be explicitly declared in the function signature or via ``indirect``. + Previously it was possible to omit an argument if a fixture with the same name existed, which was just an accident of implementation and was not meant to be a part of the API. + + +- `#6454 `_: Changed default for `-r` to `fE`, which displays failures and errors in the :ref:`short test summary `. `-rN` can be used to disable it (the old behavior). + + +- `#6469 `_: New options have been added to the :confval:`junit_logging` option: ``log``, ``out-err``, and ``all``. + + +- `#6834 `_: Excess warning summaries are now collapsed per file to ensure readable display of warning summaries. + + + +Improvements +------------ + +- `#1857 `_: ``pytest.mark.parametrize`` accepts integers for ``ids`` again, converting it to strings. + + +- `#449 `_: Use "yellow" main color with any XPASSED tests. + + +- `#4639 `_: Revert "A warning is now issued when assertions are made for ``None``". + + The warning proved to be less useful than initially expected and had quite a + few false positive cases. + + +- `#5686 `_: ``tmpdir_factory.mktemp`` now fails when given absolute and non-normalized paths. + + +- `#5984 `_: The ``pytest_warning_captured`` hook now receives a ``location`` parameter with the code location that generated the warning. + + +- `#6213 `_: pytester: the ``testdir`` fixture respects environment settings from the ``monkeypatch`` fixture for inner runs. + + +- `#6247 `_: ``--fulltrace`` is honored with collection errors. + + +- `#6384 `_: Make `--showlocals` work also with `--tb=short`. + + +- `#6653 `_: Add support for matching lines consecutively with :attr:`LineMatcher <_pytest.pytester.LineMatcher>`'s :func:`~_pytest.pytester.LineMatcher.fnmatch_lines` and :func:`~_pytest.pytester.LineMatcher.re_match_lines`. + + +- `#6658 `_: Code is now highlighted in tracebacks when ``pygments`` is installed. + + Users are encouraged to install ``pygments`` into their environment and provide feedback, because + the plan is to make ``pygments`` a regular dependency in the future. + + +- `#6795 `_: Import usage error message with invalid `-o` option. + + +- `#759 `_: ``pytest.mark.parametrize`` supports iterators and generators for ``ids``. + + + +Bug Fixes +--------- + +- `#310 `_: Add support for calling `pytest.xfail()` and `pytest.importorskip()` with doctests. + + +- `#3823 `_: ``--trace`` now works with unittests. + + +- `#4445 `_: Fixed some warning reports produced by pytest to point to the correct location of the warning in the user's code. + + +- `#5301 `_: Fix ``--last-failed`` to collect new tests from files with known failures. + + +- `#5928 `_: Report ``PytestUnknownMarkWarning`` at the level of the user's code, not ``pytest``'s. + + +- `#5991 `_: Fix interaction with ``--pdb`` and unittests: do not use unittest's ``TestCase.debug()``. + + +- `#6334 `_: Fix summary entries appearing twice when ``f/F`` and ``s/S`` report chars were used at the same time in the ``-r`` command-line option (for example ``-rFf``). + + The upper case variants were never documented and the preferred form should be the lower case. + + +- `#6409 `_: Fallback to green (instead of yellow) for non-last items without previous passes with colored terminal progress indicator. + + +- `#6454 `_: `--disable-warnings` is honored with `-ra` and `-rA`. + + +- `#6497 `_: Fix bug in the comparison of request key with cached key in fixture. + + A construct ``if key == cached_key:`` can fail either because ``==`` is explicitly disallowed, or for, e.g., NumPy arrays, where the result of ``a == b`` cannot generally be converted to `bool`. + The implemented fix replaces `==` with ``is``. + + +- `#6557 `_: Make capture output streams ``.write()`` method return the same return value from original streams. + + +- `#6566 `_: Fix ``EncodedFile.writelines`` to call the underlying buffer's ``writelines`` method. + + +- `#6575 `_: Fix internal crash when ``faulthandler`` starts initialized + (for example with ``PYTHONFAULTHANDLER=1`` environment variable set) and ``faulthandler_timeout`` defined + in the configuration file. + + +- `#6597 `_: Fix node ids which contain a parametrized empty-string variable. + + +- `#6646 `_: Assertion rewriting hooks are (re)stored for the current item, which fixes them being still used after e.g. pytester's :func:`testdir.runpytest <_pytest.pytester.Testdir.runpytest>` etc. + + +- `#6660 `_: :func:`pytest.exit() <_pytest.outcomes.exit>` is handled when emitted from the :func:`pytest_sessionfinish <_pytest.hookspec.pytest_sessionfinish>` hook. This includes quitting from a debugger. + + +- `#6752 `_: When :py:func:`pytest.raises` is used as a function (as opposed to a context manager), + a `match` keyword argument is now passed through to the tested function. Previously + it was swallowed and ignored (regression in pytest 5.1.0). + + +- `#6801 `_: Do not display empty lines inbetween traceback for unexpected exceptions with doctests. + + +- `#6802 `_: The :fixture:`testdir fixture ` works within doctests now. + + + +Improved Documentation +---------------------- + +- `#6696 `_: Add list of fixtures to start of fixture chapter. + + +- `#6742 `_: Expand first sentence on fixtures into a paragraph. + + + +Trivial/Internal Changes +------------------------ + +- `#6404 `_: Remove usage of ``parser`` module, deprecated in Python 3.9. + + pytest 5.3.5 (2020-01-29) ========================= diff --git a/doc/en/example/parametrize.rst b/doc/en/example/parametrize.rst index 8165060d5c5..df558d1bae6 100644 --- a/doc/en/example/parametrize.rst +++ b/doc/en/example/parametrize.rst @@ -484,8 +484,11 @@ Running it results in some skips if we don't have all the python interpreters in .. code-block:: pytest . $ pytest -rs -q multipython.py - ........................... [100%] - 27 passed in 0.12s + ssssssssssss...ssssssssssss [100%] + ========================= short test summary info ========================== + SKIPPED [12] $REGENDOC_TMPDIR/CWD/multipython.py:29: 'python3.5' not found + SKIPPED [12] $REGENDOC_TMPDIR/CWD/multipython.py:29: 'python3.7' not found + 3 passed, 24 skipped in 0.12s Indirect parametrization of optional implementations/imports -------------------------------------------------------------------- diff --git a/doc/en/getting-started.rst b/doc/en/getting-started.rst index e1890115eeb..06279a87a9f 100644 --- a/doc/en/getting-started.rst +++ b/doc/en/getting-started.rst @@ -28,7 +28,7 @@ Install ``pytest`` .. code-block:: bash $ pytest --version - This is pytest version 5.x.y, imported from $PYTHON_PREFIX/lib/python3.7/site-packages/pytest/__init__.py + This is pytest version 5.x.y, imported from $PYTHON_PREFIX/lib/python3.8/site-packages/pytest/__init__.py .. _`simpletest`: diff --git a/doc/en/writing_plugins.rst b/doc/en/writing_plugins.rst index e914af40169..7040f25630b 100644 --- a/doc/en/writing_plugins.rst +++ b/doc/en/writing_plugins.rst @@ -442,8 +442,13 @@ additionally it is possible to copy examples for an example folder before runnin $REGENDOC_TMPDIR/test_example.py:4: PytestExperimentalApiWarning: testdir.copy_example is an experimental api that may change over time testdir.copy_example("test_example.py") + test_example.py::test_plugin + $PYTHON_PREFIX/lib/python3.8/site-packages/_pytest/terminal.py:287: PytestDeprecationWarning: TerminalReporter.writer attribute is deprecated, use TerminalReporter._tw instead at your own risk. + See https://docs.pytest.org/en/latest/deprecations.html#terminalreporter-writer for more information. + warnings.warn( + -- Docs: https://docs.pytest.org/en/latest/warnings.html - ======================= 2 passed, 1 warning in 0.12s ======================= + ====================== 2 passed, 2 warnings in 0.12s ======================= For more information about the result object that ``runpytest()`` returns, and the methods that it provides please check out the :py:class:`RunResult