Merge 859979fa54
into ac41898755
This commit is contained in:
commit
b800d562ea
|
@ -464,6 +464,7 @@ class PyCollector(PyobjMixin, nodes.Collector, abc.ABC):
|
|||
if not metafunc._calls:
|
||||
yield Function.from_parent(self, name=name, fixtureinfo=fixtureinfo)
|
||||
else:
|
||||
metafunc._recompute_direct_params_indices()
|
||||
# Direct parametrizations taking place in module/class-specific
|
||||
# `metafunc.parametrize` calls may have shadowed some fixtures, so make sure
|
||||
# we update what the function really needs a.k.a its fixture closure. Note that
|
||||
|
@ -1131,6 +1132,8 @@ class Metafunc:
|
|||
# Result of parametrize().
|
||||
self._calls: list[CallSpec2] = []
|
||||
|
||||
self._params_directness: dict[str, Literal["indirect", "direct"]] = {}
|
||||
|
||||
def parametrize(
|
||||
self,
|
||||
argnames: str | Sequence[str],
|
||||
|
@ -1273,6 +1276,7 @@ class Metafunc:
|
|||
name2pseudofixturedef_key, default
|
||||
)
|
||||
arg_directness = self._resolve_args_directness(argnames, indirect)
|
||||
self._params_directness.update(arg_directness)
|
||||
for argname in argnames:
|
||||
if arg_directness[argname] == "indirect":
|
||||
continue
|
||||
|
@ -1445,6 +1449,12 @@ class Metafunc:
|
|||
pytrace=False,
|
||||
)
|
||||
|
||||
def _recompute_direct_params_indices(self):
|
||||
for argname, param_type in self._params_directness.items():
|
||||
if param_type == "direct":
|
||||
for i, callspec in enumerate(self._calls):
|
||||
callspec.indices[argname] = i
|
||||
|
||||
|
||||
def _find_parametrized_scope(
|
||||
argnames: Sequence[str],
|
||||
|
|
|
@ -23,13 +23,13 @@ def checked_order():
|
|||
assert order == [
|
||||
("issue_519.py", "fix1", "arg1v1"),
|
||||
("test_one[arg1v1-arg2v1]", "fix2", "arg2v1"),
|
||||
("test_one[arg1v1-arg2v2]", "fix2", "arg2v2"),
|
||||
("test_two[arg1v1-arg2v1]", "fix2", "arg2v1"),
|
||||
("test_one[arg1v1-arg2v2]", "fix2", "arg2v2"),
|
||||
("test_two[arg1v1-arg2v2]", "fix2", "arg2v2"),
|
||||
("issue_519.py", "fix1", "arg1v2"),
|
||||
("test_one[arg1v2-arg2v1]", "fix2", "arg2v1"),
|
||||
("test_one[arg1v2-arg2v2]", "fix2", "arg2v2"),
|
||||
("test_two[arg1v2-arg2v1]", "fix2", "arg2v1"),
|
||||
("test_one[arg1v2-arg2v2]", "fix2", "arg2v2"),
|
||||
("test_two[arg1v2-arg2v2]", "fix2", "arg2v2"),
|
||||
]
|
||||
|
||||
|
|
|
@ -1005,14 +1005,14 @@ class TestMetafunc:
|
|||
result.stdout.re_match_lines(
|
||||
[
|
||||
r" <Function test1\[0-3\]>",
|
||||
r" <Function test1\[0-4\]>",
|
||||
r" <Function test3\[0\]>",
|
||||
r" <Function test1\[1-3\]>",
|
||||
r" <Function test1\[1-4\]>",
|
||||
r" <Function test1\[0-4\]>",
|
||||
r" <Function test3\[1\]>",
|
||||
r" <Function test1\[1-3\]>",
|
||||
r" <Function test3\[2\]>",
|
||||
r" <Function test1\[1-4\]>",
|
||||
r" <Function test1\[2-3\]>",
|
||||
r" <Function test1\[2-4\]>",
|
||||
r" <Function test3\[2\]>",
|
||||
r" <Function test2>",
|
||||
]
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue