* Fix non-string constants at the top of file being detected as
docstrings on Python>=3.8.
* Handle an edge case where :data:`sys.stderr` and
:data:`sys.__stderr__` might already be closed when
:ref:`faulthandler` is tearing down.
* Fixed tracebacks from collection errors not getting pruned.
* Removed unhelpful error message from assertion rewrite
mechanism when exceptions are raised in ``__iter__`` methods.
Now they are treated un-iterable instead.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=132
* Markers are now considered in the
reverse mro order to ensure base class markers are
considered first -- this resolves a regression.
* Fixed ``:=`` in asserts impacting unrelated test cases.
* Handled an edge case where :data:`sys.stderr` might already
be closed when :ref:`faulthandler` is tearing down.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=130
* Fix doctest collection of
`functools.cached_property` objects.
* Fixed bug using
``--importmode=importlib`` which would cause package
``__init__.py`` files to be imported more than once in some
cases.
* Fixed bug where `user_properties`
where not being saved in the JUnit XML file if a fixture
failed during teardown.
* Fixed crash when parsing long
command line arguments that might be interpreted as files.
* Improved Documentation
* Improved disclaimer on pytest
plugin reference page to better indicate this is an
automated, non-curated listing.
- drop fix-test-raising-repr.patch, fix-tests-pygments-2.14.0.patch:
https://docs.pytest.org/en/7.1.x/changelog.html for details
assert actual == pytest.approx(expected)
* pytest used to create directories under /tmp with world-readable
permissions. This means that any user in the system was able to
read information written by tests in temporary directories (such
as those created by the tmp_path/tmpdir fixture). Now the
* #8152: Fixed "(<Skipped instance>)" being shown as a skip reason in the
* #8249: Fix the faulthandler plugin for occasions when running with
* The @pytest.yield_fixture decorator/function is now deprecated.
* Verbose mode now shows the reason that a test was skipped in the
* pytest now warns about unraisable exceptions and unhandled thread
* New pytester fixture, which is identical to testdir but its methods
* It is now possible to construct a MonkeyPatch object directly as pytest.MonkeyPatch(),
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=126
* Fixed bug where fake intermediate
modules generated by ``--import-mode=importlib`` would not
include the child modules as attributes of the parent modules.
* Fixed error assertion handling in
:func:`pytest.approx` when ``None`` is an expected or
received value when comparing dictionaries.
* Fixed issue when using
``--import-mode=importlib`` together with ``--doctest-
modules`` that caused modules to be imported more than once,
causing problems with modules that have import side effects.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=124
* Added
:func:`ExceptionInfo.from_exception()
<pytest.ExceptionInfo.from_exception>`, a simpler way to
create an :class:`~pytest.ExceptionInfo` from an exception.
This can replace :func:`ExceptionInfo.from_exc_info()
<pytest.ExceptionInfo.from_exc_info()>` for most uses.
* Update test log report annotation
to named tuple and fixed inconsistency in docs for
🪝`pytest_report_teststatus` hook.
* When an exception traceback to be
displayed is completely filtered out (by mechanisms such as
``__tracebackhide__``, internal frames, and similar), now
only the exception string and the following message are
shown:
"All traceback entries are hidden. Pass `--full-trace` to see
hidden and internal frames.".
* Improved verbose output (``-vv``)
of ``skip`` and ``xfail`` reasons by performing text wrapping
while leaving a clear margin for progress output.
* Added ``TerminalReporter.wrap_write()`` as a helper for that.
* Added handling of ``%f``
directive to print microseconds in log format options, such
as ``log-date-format``.
* Added the underlying exception to the cache provider's path
creation and write warning messages.
* Added warning when :confval:`testpaths` is set, but paths are
not found by glob.
In this case, pytest will fall back to searching from the
current directory.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=122
* Fix bug where very long option
names could cause pytest to break with ``OSError: [Errno 36]
File name too long`` on some systems.
* Support for Python 3.12
* honored to load root ``conftests``.
* The `monkeypatch` `setitem`/`delitem` type annotations now
allow `TypedDict` arguments.
* Fixed bug in assertion rewriting
where a variable assigned with the walrus operator could not
be used later in a function call.
* Fixed ``--last-failed``'s
"(skipped N files)" functionality for files inside of
packages (directories with `__init__.py` files).
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=120
* Fixed :func:`pytest.approx`
handling of dictionaries containing one or more values of
`0.0`.
* Fixed crash if `--cache-show` and `--help` are passed at the
same time.
* Fixed bug where a fixture method named ``teardown`` would
be called as part of ``nose`` teardown stage.
* Fixed crash if ``--fixtures`` and ``--help`` are passed
at the same time.
* Fixed :py:func:`pytest.raises` to
return a 'ContextManager' so that type-checkers could narrow
:code:`pytest.raises(...) if ... else nullcontext()` down to
'ContextManager' rather than 'object'.
* Fix 'importlib.abc.TraversableResources' deprecation warning in
Python 3.12.
* If a test is skipped from inside a fixture, the test summary
now shows the test location instead of the fixture location.
* Fix a race condition when creating junitxml reports,
which could occur when multiple instances of pytest execute
in parallel.
* Fix a race condition when
creating or updating the stepwise plugin's cache, which could
occur when multiple xdist worker nodes try to simultaneously
update the stepwise plugin's cache.
- drop fix-test-raising-repr.patch, fix-tests-pygments-2.14.0.patch:
merged upstream
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=113
- Update to 7.2.0:
# Deprecations
- #10012: Update pytest.PytestUnhandledCoroutineWarning{.interpreted-text
role="class"} to a deprecation; it will raise an error in pytest 8.
- #10396: pytest no longer depends on the py library. pytest provides a
vendored copy of py.error and py.path modules but will use the py library
if it is installed. If you need other py.* modules, continue to install the
deprecated py library separately, otherwise it can usually be removed as a
dependency.
- #4562: Deprecate configuring hook specs/impls using attributes/marks.
- Instead use :pypytest.hookimpl{.interpreted-text role="func"} and
:pypytest.hookspec{.interpreted-text role="func"}.
For more details, see the docs
<legacy-path-hooks-deprecated>{.interpreted-text role="ref"}.
- #9886: The functionality for running tests written for nose has been
officially deprecated.
This includes:
* Plain setup and teardown functions and methods: this might catch users
by surprise, as setup() and teardown() are not pytest idioms, but part
of the nose support.
* Setup/teardown using the @with_setup decorator.
For more details, consult the deprecation docs
<nose-deprecation>{.interpreted-text role="ref"}.
# Features
- #9897: Added shell-style wildcard support to testpaths.
# Improvements
- #10218: @pytest.mark.parametrize() (and similar functions) now accepts any
Sequence[str] for the argument names, instead of just list[str] and
tuple[str, ...].
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=104
- Update to 7.1.1
* #9767: Fixed a regression in pytest 7.1.0 where some
conftest.py files outside of the source tree (e.g. in the
[site-packages]{.title-ref} directory) were not picked up.
- python-pytest5 is gone. Remove the libalts stopgap
- Update to 7.1.0
* Big changelog for 7.x series, see
https://docs.pytest.org/en/7.1.x/changelog.html for details
- Breaking changes:
* #8838: As per our policy, the following features have been
deprecated in the 6.X series and are now removed:
+ pytest._fillfuncargs function.
+ pytest_warning_captured hook - use pytest_warning_recorded
instead.
+ -k -foobar syntax - use -k 'not foobar' instead.
+ -k foobar: syntax.
* pytest.collect module - import from pytest directly.
* #9437: Dropped support for Python 3.6, which reached
end-of-life at 2021-12-23.
* #7259: The Node.reportinfo() function first return value type
has been expanded from py.path.local | str to os.PathLike[str]
| str.
Most plugins which refer to reportinfo() only define it as part
of a custom pytest.Item implementation. Since py.path.local is
a os.PathLike[str], these plugins are unaffacted.
Plugins and users which call reportinfo(), use the first return
value and interact with it as a py.path.local, would need to
adjust by calling py.path.local(fspath). Although preferably,
avoid the legacy py.path.local and use pathlib.Path, or use
item.location or item.path, instead.
Note: pytest was not able to provide a deprecation period for
this change.
* #8246: --version now writes version information to stdout
rather than stderr.
* #8733: Drop a workaround for pyreadline that made it work with
--pdb. The workaround was introduced in #1281 in 2015, however
since then pyreadline seems to have gone unmaintained, is
generating warnings, and will stop working on Python 3.10.
* #9061: Using pytest.approx() in a boolean context now raises an
error hinting at the proper usage.
It is apparently common for users to mistakenly use
pytest.approx like this:
assert pytest.approx(actual, expected)
While the correct usage is:
assert actual == pytest.approx(expected)
The new error message helps catch those mistakes.
* #9277: The pytest.Instance collector type has been removed.
Importing pytest.Instance or _pytest.python.Instance returns a
dummy type and emits a deprecation warning. See The
pytest.Instance collector for details.
* If you have concerns about the removal of a specific feature,
please add a comment to issue #9308.
- Drop patches
* pytest-pr8664-py3.10-test_trial_error-fail.patch
* pytest-pr9173-importlib-py310.patch
* pytest-pr9417-py3.10.1-fail.patch
OBS-URL: https://build.opensuse.org/request/show/965098
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=100
- Update to 6.2.1
* pytest now supports python3.6+ only.
* Directly constructing/calling some classes/functions is now deprecated
(see upstream changelog)
* The @pytest.yield_fixture decorator/function is now deprecated.
Use pytest.fixture() instead.
* No removals so far.
* Verbose mode now shows the reason that a test was skipped in the
test’s terminal line after the “SKIPPED”, “XFAIL” or “XPASS”.
* pytest now warns about unraisable exceptions and unhandled thread
exceptions that occur in tests on Python>=3.8.
* New pytester fixture, which is identical to testdir but its methods
return pathlib.Path when appropriate instead of py.path.local.
* It is now possible to construct a MonkeyPatch object directly as pytest.MonkeyPatch(),
in cases when the monkeypatch fixture cannot be used.
* Many more new features and bugfixes
OBS-URL: https://build.opensuse.org/request/show/860603
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=83
- Update to 6.1.2
* #7758: Fixed an issue where some files in packages are
getting lost from --lf even though they contain
tests that failed. Regressed in pytest 5.4.0.
* #7911: Directories created by tmpdir are now considered
stale after 3 days without modification (previous value
was 3 hours) to avoid deleting directories still in use
in long running test suites.
* #7815: Improve deprecation warning message for
pytest._fillfuncargs().
- remove old py.test2 and py.test3 entry points
- Fix py.test3 conflict for python3 flavors by alternatives
* gh#openSUSE/python-rpm-macros#66
* Make pytest the main alternative as py.test is the deprecated
name
- Fix gh#pytest-dev/pytest#7891 : require toml for build
OBS-URL: https://build.opensuse.org/request/show/844811
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=76
* Paths appearing in error messages are now correct in case the current working
directory has changed since the start of the session.
* Support deleting paths longer than 260 characters on windows created inside tmpdir.
* Prevent pytest from printing ConftestImportFailure traceback to stdout.
* Prevent hiding the underlying exception when ConfTestImportFailure is raised.
* Fix regression where running with --pdb would call the tearDown methods
of unittest.TestCase subclasses for skipped tests.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=61
* Fix crash with captured output when using the capsysbinary fixture.
* Ensure a unittest.IsolatedAsyncioTestCase is actually awaited.
* Fix TerminalRepr instances to be hashable again.
* Fix regression where functions registered with TestCase.addCleanup
were not being called on test failures.
* Allow users to still set the deprecated TerminalReporter.writer attribute.
* Revert “tmpdir: clean up indirection via config for factories
* Fixed regression: asyncbase.TestCase tests are executed correctly again
* Fix File.from_constructor so it forwards extra keyword arguments to the constructor.
* Classes with broken __getattribute__ methods are displayed correctly during failures.
* Fix _is_setup_py for files encoded differently than locale.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=59
* #6909: Revert the change introduced by #6330, which required all
arguments to @pytest.mark.parametrize to be explicitly defined
in the function signature.
* #6910: Fix crash when plugins return an unknown stats while using
the --reportlog option.
* #6316: Matching of -k EXPRESSION to test names is now case-insensitive.
* #6443: Plugins specified with -p are now loaded after internal plugins
* #6637: Removed the long-deprecated pytest_itemstart hook.
* #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.
- Remove merged patch tidy-up-embeddedfile.patch
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=58
* Captured output during teardown is shown with -rP
* Fix a pytest-xdist crash when dealing with exceptions raised
in subprocesses created by the multiprocessing module.
* FixtureDef objects now properly register their finalizers
with autouse and parameterized fixtures that execute before
them in the fixture stack so they are torn down at the right times,
and in the right order.
* Fix parsing of outcomes containing multiple errors with testdir results
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=53
* junitxml: Logs for failed test are now passed to junit report in
case the test fails during call phase.
* supporting files in the .pytest_cache directory are kept with
--cache-clear, which only clears cached values now.
* Fix assertion rewriting for egg-based distributions and editable
installs (pip install --editable).
* Improve check for misspelling of pytest.mark.parametrize.
* Handle exit.Exception raised in notify_exception (via pytest_internalerror), e.g. when quitting pdb from post mortem.
* default value of junit_family option will change to xunit2 in
pytest 6.0, given that this is the version supported by default in
modern tools that manipulate this type of file.
* In order to smooth the transition, pytest will issue a warning in
case the --junitxml option is given in the command line but
junit_family is not explicitly configured in pytest.ini.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=50
* #5206: Fix --nf to not forget about known nodeids with partial test selection.
* #5906: Fix crash with KeyboardInterrupt during --setup-show.
* #5946: Fixed issue when parametrizing fixtures with numpy arrays (and possibly other sequence-like types).
* #6044: Properly ignore FileNotFoundError 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).
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=47
* #5902: Fix warnings about deprecated cmp attribute in attrs>=19.2.
* #1682: Passing arguments to pytest.fixture() as positional arguments is deprecated - pass them as a keyword argument instead.
* #1682: The scope parameter of @pytest.fixture can now be a callable that receives the fixture name and the config object as keyword-only parameters. See the docs for more information.
* #5764: New behavior of the --pastebin option: failures to connect to the pastebin server are reported, without failing the pytest run
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=45
* #2270: Fixed self reference in function-scoped fixtures defined plugin classes: previously self would be a reference to a test class, not the plugin class.
* #570: Fixed long standing issue where fixture scope was not respected when indirect fixtures were used during parametrization.
* #5782: Fix decoding error when printing an error response from --pastebin.
* #5786: Chained exceptions in test and collection reports are now correctly serialized, allowing plugins like pytest-xdist to display them properly.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=41
* Removed:
+ Request.getfuncargvalue: use Request.getfixturevalue instead.
+ pytest.raises and pytest.warns no longer support strings as the second argument.
+ message parameter of pytest.raises.
+ pytest.raises, pytest.warns and ParameterSet.param now use native keyword-only
syntax. This might change the exception message from previous versions, but
they still raise TypeError on unknown keyword arguments as before.
+ pytest.config global variable.
+ tmpdir_factory.ensuretemp method.
+ pytest_logwarning hook.
+ RemovedInPytest4Warning warning type.
+ request is now a reserved name for fixtures.
+ Removed unused support code for unittest2.
+ pytest.fail, pytest.xfail and pytest.skip no longer support bytes
for the message argument.
* New Config.invocation_args attribute containing the unchanged arguments passed to pytest.main().
* New NUMBER option for doctests to ignore irrelevant differences in floating-point numbers
* JUnit XML now includes a timestamp and hostname in the testsuite tag.
* Fix RuntimeError/StopIteration when trying to collect package with “__init__.py” only.
* Warnings issued during pytest_configure are explicitly not treated as errors,
even if configured as such, because it otherwise completely breaks pytest.
* The XML file produced by --junitxml now correctly contain a <testsuites> root element.
* Fixed using multiple short options together in the command-line (for example -vs) in Python 3.8+.
* Fix issue where tmp_path and tmpdir would not remove directories containing
files marked as read-only, which could lead to pytest crashing when executed
a second time with the --basetemp option.
* Replace importlib_metadata backport with importlib.metadata from the standard
library on Python 3.8+.
* Improve type checking for some exception-raising functions (pytest.xfail,
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest?expand=0&rev=40