Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix compatibility with pytest ^8 #776

Merged
merged 4 commits into from
Feb 6, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion dependencies/default/constraints.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ hypothesis==6.96.2
iniconfig==2.0.0
packaging==23.2
pluggy==1.3.0
pytest==7.4.4
pytest==8.0.0
sortedcontainers==2.4.0
tomli==2.0.1
typing_extensions==4.9.0
2 changes: 1 addition & 1 deletion dependencies/default/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# Always adjust install_requires in setup.cfg and pytest-min-requirements.txt
# when changing runtime dependencies
pytest >= 7.0.0,<8
pytest >= 7.0.0, !=8.0.0rc1, !=8.0.0rc2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ran your patch successfully against pytest-8.0.0rc1 and pytest-8.0.0rc2. This means there's not reason to exclude them in the compatible versions. It's more likely that #764 reduced the number of issues with the collection changes in pytest.

More importantly, we should try to keep the upper version bound at all costs, both in requirements.txt and especially in setup.py. Otherwise we assume that pytest-asyncio is compatible with potentially breaking changes in pytest 9.

2 changes: 1 addition & 1 deletion dependencies/pytest-min/constraints.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ packaging==23.2
pluggy==1.3.0
py==1.11.0
Pygments==2.16.1
pytest==7.0.0
pytest==8.0.0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The intention of the pytest-min environment is to test against an older version of pytest. This way, pytest-asyncio doesn't accidentally use any of the newer pytest features without a proper bump of the minimum supported version.

I think we should continue to support pytest 7 for at least a short period of time, in order to allow users to migrate pytest independently from pytest-asyncio.

requests==2.31.0
sortedcontainers==2.4.0
tomli==2.0.1
Expand Down
2 changes: 1 addition & 1 deletion dependencies/pytest-min/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# Always adjust install_requires in setup.cfg and requirements.txt
# when changing minimum version dependencies
pytest[testing] == 7.0.0
pytest[testing] == 8.0.0
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ include_package_data = True

# Always adjust requirements.txt and pytest-min-requirements.txt when changing runtime dependencies
install_requires =
pytest >= 7.0.0,<8
pytest >= 7.0.0, !=8.0.0rc1, !=8.0.0rc2

[options.extras_require]
testing =
Expand Down
4 changes: 3 additions & 1 deletion tests/markers/test_session_scope.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,9 @@ async def test_this_runs_in_same_loop(self):
"""
),
)
subpackage_name = "subpkg"

# subpackage_name must alphabetically come after test_module_one.py
subpackage_name = "z_subpkg"
subpkg = pytester.mkpydir(subpackage_name)
subpkg.joinpath("test_subpkg.py").write_text(
dedent(
Expand Down
4 changes: 3 additions & 1 deletion tests/test_is_async_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,10 @@ def pytest_collection_modifyitems(items):
if pytest.version_tuple < (7, 2):
# Probably related to https://github.com/pytest-dev/pytest/pull/10012
result.assert_outcomes(failed=1)
else:
elif pytest.version_tuple < (8,):
result.assert_outcomes(skipped=1)
else:
result.assert_outcomes(failed=1)


def test_returns_true_for_unmarked_coroutine_item_in_auto_mode(pytester: Pytester):
Expand Down