Fix a test

This commit is contained in:
Sadra Barikbin 2023-09-09 16:53:47 +03:30
parent c72507cad9
commit 7c56b16faf
2 changed files with 23 additions and 13 deletions

View File

@ -1550,9 +1550,9 @@ class Metafunc:
definition = self.definition definition = self.definition
fm = cast(nodes.Node, definition.parent).session._fixturemanager fm = cast(nodes.Node, definition.parent).session._fixturemanager
fixture_closure, _ = fm.getfixtureclosure( fixture_closure, _ = fm.getfixtureclosure(
definition, parentnode=definition,
definition._fixtureinfo.initialnames, initialnames=definition._fixtureinfo.initialnames,
definition._fixtureinfo.name2fixturedefs, arg2fixturedefs=definition._fixtureinfo.name2fixturedefs,
ignore_args=_get_direct_parametrize_args(definition), ignore_args=_get_direct_parametrize_args(definition),
) )
definition._fixtureinfo.names_closure[:] = fixture_closure definition._fixtureinfo.names_closure[:] = fixture_closure

View File

@ -4638,7 +4638,9 @@ def test_request_shouldnt_be_in_closure_after_pruning_dep_tree_when_its_not_in_i
) )
def test_dont_recompute_dependency_tree_if_no_dynamic_parametrize(pytester: Pytester): def test_dont_recompute_dependency_tree_if_no_direct_dynamic_parametrize(
pytester: Pytester,
):
pytester.makeconftest( pytester.makeconftest(
""" """
import pytest import pytest
@ -4667,6 +4669,10 @@ def test_dont_recompute_dependency_tree_if_no_dynamic_parametrize(pytester: Pyte
if metafunc.definition.name == "test_0": if metafunc.definition.name == "test_0":
metafunc.parametrize("fixture", [0]) metafunc.parametrize("fixture", [0])
if metafunc.definition.name == "test_4":
metafunc.parametrize("fixture", [0], indirect=True)
@pytest.fixture(scope='module') @pytest.fixture(scope='module')
def fixture(): def fixture():
pass pass
@ -4685,23 +4691,27 @@ def test_dont_recompute_dependency_tree_if_no_dynamic_parametrize(pytester: Pyte
def test_3(fixture): def test_3(fixture):
pass pass
def test_4(fixture):
pass
@pytest.fixture @pytest.fixture
def fm(request): def fm(request):
yield request._fixturemanager yield request._fixturemanager
def test(fm): def test(fm):
method = fm.getfixtureclosure calls = fm.getfixtureclosure.call_args_list
assert len(method.call_args_list) == 6 assert len(calls) == 7
assert method.call_args_list[0].args[0].nodeid.endswith("test_0") assert calls[0].kwargs["parentnode"].nodeid.endswith("test_0")
assert method.call_args_list[1].args[0].nodeid.endswith("test_0") assert calls[1].kwargs["parentnode"].nodeid.endswith("test_0")
assert method.call_args_list[2].args[0].nodeid.endswith("test_1") assert calls[2].kwargs["parentnode"].nodeid.endswith("test_1")
assert method.call_args_list[3].args[0].nodeid.endswith("test_2") assert calls[3].kwargs["parentnode"].nodeid.endswith("test_2")
assert method.call_args_list[4].args[0].nodeid.endswith("test_3") assert calls[4].kwargs["parentnode"].nodeid.endswith("test_3")
assert method.call_args_list[5].args[0].nodeid.endswith("test") assert calls[5].kwargs["parentnode"].nodeid.endswith("test_4")
assert calls[6].kwargs["parentnode"].nodeid.endswith("test")
""" """
) )
reprec = pytester.inline_run() reprec = pytester.inline_run()
reprec.assertoutcome(passed=5) reprec.assertoutcome(passed=6)
def test_deduplicate_names() -> None: def test_deduplicate_names() -> None: