Accepting request 1206345 from home:mcalabkova:branches:devel:languages:python

- Update to 0.24.0
  * BREAKING: Updated minimum supported pytest version to v8.2.0
  * Adds an optional loop_scope keyword argument to pytest.mark.asyncio.
  * Deprecates the optional scope keyword argument to pytest.mark.asyncio 
    for API consistency with pytest_asyncio.fixture.
  * Fixes a bug that caused module-scoped async fixtures to fail when 
    reused in other modules
  * Fixes a bug that caused duplicate markers in async tests
  * Declare support for Python 3.13
- Drop merged duplicated-markers.patch

OBS-URL: https://build.opensuse.org/request/show/1206345
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:pytest/python-pytest-asyncio?expand=0&rev=48
This commit is contained in:
Dirk Mueller 2024-10-09 05:30:01 +00:00 committed by Git OBS Bridge
commit b1d5daabf2
8 changed files with 511 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

3
_multibuild Normal file
View File

@ -0,0 +1,3 @@
<multibuild>
<package>test</package>
</multibuild>

86
duplicated-markers.patch Normal file
View File

@ -0,0 +1,86 @@
From b646cc18a222c8043433c38a42c07245fe9735ce Mon Sep 17 00:00:00 2001
From: Michael Seifert <m.seifert@digitalernachschub.de>
Date: Sun, 19 May 2024 14:00:57 +0200
Subject: [PATCH] [fix] Fixed a bug that causes markers to be duplicated for
async test functions.
Signed-off-by: Michael Seifert <m.seifert@digitalernachschub.de>
---
docs/source/reference/changelog.rst | 9 ++++++++
pytest_asyncio/plugin.py | 3 ++-
tests/markers/test_function_scope.py | 31 ++++++++++++++++++++++++++++
3 files changed, 42 insertions(+), 1 deletion(-)
diff --git a/docs/source/reference/changelog.rst b/docs/source/reference/changelog.rst
index a55fb9a8..5f0de0a1 100644
--- a/docs/source/reference/changelog.rst
+++ b/docs/source/reference/changelog.rst
@@ -2,6 +2,15 @@
Changelog
=========
+0.23.8 (UNRELEASED)
+===================
+- Fixes a bug that caused duplicate markers in async tests `#813 <https://github.com/pytest-dev/pytest-asyncio/issues/813>`_
+
+Known issues
+------------
+As of v0.23, pytest-asyncio attaches an asyncio event loop to each item of the test suite (i.e. session, packages, modules, classes, functions) and allows tests to be run in those loops when marked accordingly. Pytest-asyncio currently assumes that async fixture scope is correlated with the new event loop scope. This prevents fixtures from being evaluated independently from the event loop scope and breaks some existing test suites (see `#706`_). For example, a test suite may require all fixtures and tests to run in the same event loop, but have async fixtures that are set up and torn down for each module. If you're affected by this issue, please continue using the v0.21 release, until it is resolved.
+
+
0.23.7 (2024-05-19)
===================
- Silence deprecation warnings about unclosed event loops that occurred with certain CPython patch releases `#817 <https://github.com/pytest-dev/pytest-asyncio/pull/817>`_
diff --git a/pytest_asyncio/plugin.py b/pytest_asyncio/plugin.py
index cd4c4ede..d3d1fcf7 100644
--- a/pytest_asyncio/plugin.py
+++ b/pytest_asyncio/plugin.py
@@ -405,7 +405,8 @@ def _from_function(cls, function: Function, /) -> Function:
keywords=function.keywords,
originalname=function.originalname,
)
- subclass_instance.own_markers.extend(function.own_markers)
+ subclass_instance.own_markers = function.own_markers
+ assert subclass_instance.own_markers == function.own_markers
subclassed_function_signature = inspect.signature(subclass_instance.obj)
if "event_loop" in subclassed_function_signature.parameters:
subclass_instance.warn(
diff --git a/tests/markers/test_function_scope.py b/tests/markers/test_function_scope.py
index 2057a128..eded4552 100644
--- a/tests/markers/test_function_scope.py
+++ b/tests/markers/test_function_scope.py
@@ -197,3 +197,34 @@ async def test_anything():
)
result = pytester.runpytest_subprocess("--asyncio-mode=strict")
result.assert_outcomes(warnings=0, passed=1)
+
+
+def test_asyncio_mark_does_not_duplicate_other_marks_in_auto_mode(
+ pytester: Pytester,
+):
+ pytester.makeconftest(
+ dedent(
+ """\
+ def pytest_configure(config):
+ config.addinivalue_line(
+ "markers", "dummy_marker: mark used for testing purposes"
+ )
+ """
+ )
+ )
+ pytester.makepyfile(
+ dedent(
+ """\
+ import pytest
+
+ @pytest.mark.dummy_marker
+ async def test_markers_not_duplicated(request):
+ markers = []
+ for node, marker in request.node.iter_markers_with_node():
+ markers.append(marker)
+ assert len(markers) == 2
+ """
+ )
+ )
+ result = pytester.runpytest_subprocess("--asyncio-mode=auto")
+ result.assert_outcomes(warnings=0, passed=1)

BIN
pytest-asyncio-0.23.7.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e770d3d3de20968d03a556c8f2ebe461c568d283a993f4a1179ddd02e5f633a6
size 47578

View File

@ -0,0 +1,308 @@
-------------------------------------------------------------------
Tue Oct 8 15:42:52 UTC 2024 - Markéta Machová <mmachova@suse.com>
- Update to 0.24.0
* BREAKING: Updated minimum supported pytest version to v8.2.0
* Adds an optional loop_scope keyword argument to pytest.mark.asyncio.
* Deprecates the optional scope keyword argument to pytest.mark.asyncio
for API consistency with pytest_asyncio.fixture.
* Fixes a bug that caused module-scoped async fixtures to fail when
reused in other modules
* Fixes a bug that caused duplicate markers in async tests
* Declare support for Python 3.13
- Drop merged duplicated-markers.patch
-------------------------------------------------------------------
Tue Jul 9 13:43:10 UTC 2024 - Markéta Machová <mmachova@suse.com>
- Add duplicated-markers.patch to fix some testsuites broken by
that issue.
-------------------------------------------------------------------
Thu Jun 6 20:26:26 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 0.23.7:
* Silence deprecation warnings about unclosed event loops that
occurred with certain CPython patch releases
-------------------------------------------------------------------
Thu Mar 21 17:04:18 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 0.23.6:
* compatibiltiy with pytest 8.2
-------------------------------------------------------------------
Sat Mar 16 09:46:24 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 0.23.5.post1:
* Declare compatibility with pytest 8
* Fix typing errors with recent versions of mypy #769
* Prevent DeprecationWarning about internal use of
`asyncio.get_event_loop()` from affecting test cases #757
-------------------------------------------------------------------
Sat Mar 2 11:29:53 UTC 2024 - Ben Greiner <code@bnavigator.de>
- Update to 0.23.5
* Declare compatibility with pytest 8 #737
* Fix typing errors with recent versions of mypy #769
* Prevent DeprecationWarning about internal use of
asyncio.get_event_loop() from affecting test cases #757
## Known issues
* As of v0.23, pytest-asyncio attaches an asyncio event loop to
each item of the test suite (i.e. session, packages, modules,
classes, functions) and allows tests to be run in those loops
when marked accordingly. Pytest-asyncio currently assumes that
async fixture scope is correlated with the new event loop
scope. This prevents fixtures from being evaluated
independently from the event loop scope and breaks some
existing test suites (see #706). For example, a test suite may
require all fixtures and tests to run in the same event loop,
but have async fixtures that are set up and torn down for each
module. If you're affected by this issue, please continue using
the v0.21 release, until it is resolved.
- Release 0.23.4
* pytest-asyncio no longer imports additional, unrelated packages
during test collection #729
* Addresses further issues that caused an internal pytest error
during test collection
* Declares incompatibility with pytest 8 #737
-------------------------------------------------------------------
Tue Jan 2 12:01:57 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to 0.23.3:
* Fixes a bug that caused event loops to be closed prematurely
when using async generator fixtures with class scope or wider
in a function-scoped test #706
* Fixes various bugs that caused an internal pytest error
during test collection #711 #713 #719
* Fixes a bug that caused an internal pytest error when
collecting .txt files
* Fixes a bug that caused an internal pytest error when using
module-level skips #701
This release is backwards-compatible with v0.21. Changes are
non-breaking, unless you upgrade from v0.22.
* BREAKING: The asyncio_event_loop mark has been removed.
Event loops with class, module, package, and session scopes
can be requested via the scope keyword argument to the
_asyncio_ mark. -
Introduces the event_loop_policy fixture which allows testing
with non-default or multiple event loops
* Introduces pytest_asyncio.is_async_test which returns whether
a test item is managed by pytest-asyncio
* Removes and pytest trio, mypy, and flaky from the test
dependencies
* Deprecate redefinition of the event_loop fixture. #587 Users
requiring a class-scoped or module-scoped asyncio event loop
for their tests should mark the corresponding class or module
with asyncio_event_loop.
* Test items based on asynchronous generators always exit with
xfail status and emit a warning during the collection phase.
This behavior is consistent with synchronous yield tests.
#642
* Remove support for Python 3.7
* Declare support for Python 3.12
- drop hypothesis-health-check.patch (upstream)
-------------------------------------------------------------------
Tue Nov 7 19:34:40 UTC 2023 - Dirk Müller <dmueller@suse.com>
- remove unnecessary dependency on async_generator
-------------------------------------------------------------------
Tue Oct 17 08:19:39 UTC 2023 - Markéta Machová <mmachova@suse.com>
- Add hypothesis-health-check.patch to fix tests
-------------------------------------------------------------------
Mon Jul 24 18:40:25 UTC 2023 - Dirk Müller <dmueller@suse.com>
- update to 0.21.1:
* Output a proper error message when an invalid
``asyncio_mode`` is selected.
* Extend warning message about unclosed event loops with
additional possible cause.
* Previously, some tests reported "skipped" or "xfailed" as a
result. Now all tests report a "success" result.
-------------------------------------------------------------------
Thu May 4 22:36:44 UTC 2023 - Dirk Müller <dmueller@suse.com>
- update to 0.21.0:
* Drop compatibility with pytest 6.1. Pytest-asyncio now
depends on pytest 7.0 or newer.
* pytest-asyncio cleans up any stale event loops when setting
up and tearing down the event_loop fixture.
-------------------------------------------------------------------
Fri Apr 21 12:31:26 UTC 2023 - Dirk Müller <dmueller@suse.com>
- add sle15_python_module_pythons (jsc#PED-68)
-------------------------------------------------------------------
Thu Apr 13 22:43:58 UTC 2023 - Matej Cepl <mcepl@suse.com>
- Make calling of %{sle15modernpython} optional.
-------------------------------------------------------------------
Fri Dec 9 11:11:04 UTC 2022 - Daniel Garcia <daniel.garcia@suse.com>
- Update to 0.20.3:
* Prevent DeprecationWarning to bubble up on CPython 3.10.9 and 3.11.1. #460
-------------------------------------------------------------------
Wed Nov 30 07:13:34 UTC 2022 - Daniel Garcia <daniel.garcia@suse.com>
- Update to 0.20.2:
* Fixes an issue with async fixtures that are defined as methods on a test
class not being rebound to the actual test instance. #197
* Replaced usage of deprecated @pytest.mark.tryfirst with
@pytest.hookimpl(tryfirst=True) #438
- 0.20.1 (22-10-21)
* Fixes an issue that warned about using an old version of pytest, even
though the most recent version was installed. #430
- 0.20.0 (22-10-21)
* BREAKING: Removed legacy mode. If you're upgrading from v0.19 and you
haven't configured asyncio_mode = legacy, you can upgrade without taking
any additional action. If you're upgrading from an earlier version or you
have explicitly enabled legacy mode, you need to switch to auto or strict
mode before upgrading to this version.
* Deprecate use of pytest v6.
* Fixed an issue which prevented fixture setup from being cached. #404
-------------------------------------------------------------------
Fri Aug 5 04:57:24 UTC 2022 - John Vandenberg <jayvdb@gmail.com>
- Update to 0.19.0
* BREAKING: The default ``asyncio_mode`` is now *strict*.
* Removes `setup.py` since all relevant configuration is present
`setup.cfg`.
* Declare support for Python 3.11
-------------------------------------------------------------------
Wed Jul 6 07:59:54 UTC 2022 - Steve Kowalik <steven.kowalik@suse.com>
- Inject multibuild to defeat a build loop
-------------------------------------------------------------------
Tue Jun 28 19:00:14 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Update to 0.18.3
* Adds pytest-trio to the test dependencies
* Fixes a bug that caused pytest-asyncio to try to set up async
pytest_trio fixtures in strict mode. #298
- Release 0.18.2
* Fix asyncio auto mode not marking static methods. #295
* Fix a compatibility issue with Hypothesis 6.39.0. #302
- Release 0.18.1
* Fixes a regression that prevented async fixtures from working
in synchronous tests. #286
- Release 0.18.0
* Raise a warning if @pytest.mark.asyncio is applied to non-async
function. #275
* Support parametrized event_loop fixture. #278
-------------------------------------------------------------------
Thu Jan 20 16:39:35 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Update to 0.17.2
* Require typing-extensions on Python<3.8 only. #269
* Fix a regression in tests collection introduced by 0.17.1, the
plugin works fine with non-python tests again. #267
- Release notes for 0.17.1
* Fixes a bug that prevents async Hypothesis tests from working
without explicit asyncio marker when --asyncio-mode=auto is
set. #258
* Fixed a bug that closes the default event loop if the loop
doesn't exist #257
* Added type annotations. #198
* Show asyncio mode in pytest report headers. #266
* Relax asyncio_mode type definition; it allows to support pytest
6.1+. #262
- Release notes for 0.17.0
* pytest-asyncio no longer alters existing event loop policies.
#168, #188
* Drop support for Python 3.6
* Fixed an issue when pytest-asyncio was used in combination with
flaky or inherited asynchronous Hypothesis tests. #178 #231
* Added flaky to test dependencies
* Added unused_udp_port and unused_udp_port_factory fixtures
(similar to unused_tcp_port and unused_tcp_port_factory
counterparts. #99
* Added the plugin modes: strict, auto, and legacy. See
documentation for details. #125
* Correctly process KeyboardInterrupt during async fixture setup
phase #219
-------------------------------------------------------------------
Sun Oct 17 13:20:44 UTC 2021 - Ben Greiner <code@bnavigator.de>
- Update to 0.16.0
* Add support for Python 3.10
- Drop 0001-removed-support-for-python-3.5.patch not required by
fakeredis 1.6.0 anymore
-------------------------------------------------------------------
Mon Jul 5 08:38:37 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>
- Add patch to revert a change in 0.15.1 that removed
async_generator support in upstream together with python 3.5
support. This revert is needed by python-fakeredis 1.5.2
* 0001-removed-support-for-python-3.5.patch
-------------------------------------------------------------------
Thu Jun 3 09:53:19 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>
- Update to 0.15.1
* Hotfix for errors while closing event loops while replacing
them. #209 #210
- Update to 0.15.0
* Add support for Python 3.9
* Abandon support for Python 3.5. If you still require support
for Python 3.5, please use pytest-asyncio v0.14 or earlier.
* Set unused_tcp_port_factory fixture scope to 'session'. #163
* Properly close event loops when replacing them. #208
-------------------------------------------------------------------
Mon Jun 29 09:10:04 UTC 2020 - Marketa Calabkova <mcalabkova@suse.com>
- Update to 0.14.0
* Fix #162, and event_loop fixture behavior now is coherent on all scopes.
-------------------------------------------------------------------
Tue Jun 9 08:13:59 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
- Update to 0.12.0:
* Run the event loop fixture as soon as possible.
-------------------------------------------------------------------
Mon Apr 27 10:36:39 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
- Update to 0.11.0:
* Fix with pytest 5.4
-------------------------------------------------------------------
Mon Mar 9 09:37:18 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
- Fix test run on python 3.8+
-------------------------------------------------------------------
Wed Feb 13 13:14:40 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
- Update to 0.10.0:
* support for pytest 4+
-------------------------------------------------------------------
Tue Sep 4 13:10:57 UTC 2018 - Ondřej Súkup <mimi.vx@gmail.com>
- update to 0.9.0
- use github tarbal due packaging errrors in upstream
* Python 3.7 support.
* Remove event_loop_process_pool fixture
and pytest.mark.asyncio_process_pool marker
-------------------------------------------------------------------
Fri Jan 5 09:47:11 UTC 2018 - alarrosa@suse.com
- Initial release of python-pytest-asyncio 0.8.0

View File

@ -0,0 +1,84 @@
#
# spec file for package python-pytest-asyncio
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test"
%define psuffix -test
%bcond_without test
%else
%define psuffix %{nil}
%bcond_with test
%endif
%{?sle15_python_module_pythons}
Name: python-pytest-asyncio%{psuffix}
Version: 0.24.0
Release: 0
Summary: Pytest support for asyncio
License: Apache-2.0
URL: https://github.com/pytest-dev/pytest-asyncio
Source: https://github.com/pytest-dev/pytest-asyncio/archive/v%{version}.tar.gz#/pytest-asyncio-%{version}.tar.gz
BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools_scm}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: (python-pytest >= 8.2.0 with python-pytest < 9)
BuildArch: noarch
%if %{with test}
BuildRequires: %{python_module hypothesis >= 5.7.1}
BuildRequires: %{python_module pytest-asyncio = %{version}}
%endif
%python_subpackages
%description
pytest-asyncio is a Python library used for testing asyncio code with pytest.
asyncio code is usually written in the form of coroutines, which makes it
slightly more difficult to test using normal testing tools. pytest-asyncio
provides useful fixtures and markers to make testing easier.
%prep
%autosetup -p1 -n pytest-asyncio-%{version}
%build
export SETUPTOOLS_SCM_PRETEND_VERSION=%{version}
%pyproject_wheel
%if !%{with test}
%install
export SETUPTOOLS_SCM_PRETEND_VERSION=%{version}
%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%endif
%if %{with test}
%check
%pytest
%endif
%if !%{with test}
%files %{python_files}
%doc README.rst
%license LICENSE
%{python_sitelib}/pytest_asyncio
%{python_sitelib}/pytest_asyncio-%{version}.dist-info
%endif
%changelog