fixtures: add a test for a currently non-covered scope mismatch scenario

This test makes clear the need for the `_check_scope()` call in the
`pytest_setup_fixture` impl in fixtures.py, which otherwise seems
redundant with the one in `_compute_fixture_value`.
This commit is contained in:
Ran Benita 2023-07-17 23:58:35 +03:00
parent 02ba39bfcd
commit 396bfbf30b
1 changed files with 25 additions and 0 deletions

View File

@ -2464,6 +2464,31 @@ class TestFixtureMarker:
["*ScopeMismatch*You tried*function*session*request*"]
)
def test_scope_mismatch_already_computed_dynamic(self, pytester: Pytester) -> None:
pytester.makepyfile(
test_it="""
import pytest
@pytest.fixture(scope="function")
def fixfunc(): pass
@pytest.fixture(scope="module")
def fixmod(fixfunc): pass
def test_it(request, fixfunc):
request.getfixturevalue("fixmod")
""",
)
result = pytester.runpytest()
assert result.ret == ExitCode.TESTS_FAILED
result.stdout.fnmatch_lines(
[
"*ScopeMismatch*involved factories*",
"test_it.py:6: def fixmod(fixfunc)",
]
)
def test_dynamic_scope(self, pytester: Pytester) -> None:
pytester.makeconftest(
"""