Skip to content

Commit

Permalink
Merge pull request #11253 from bluetech/11243-cherry-picks
Browse files Browse the repository at this point in the history
11243 cherry picks
  • Loading branch information
bluetech authored Jul 27, 2023
2 parents 430ad14 + e8aa906 commit 448563c
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 23 deletions.
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,7 @@ Ross Lawley
Ruaridh Williamson
Russel Winder
Ryan Wooden
Sadra Barikbin
Saiprasad Kale
Samuel Colvin
Samuel Dion-Girardeau
Expand Down
6 changes: 3 additions & 3 deletions src/_pytest/config/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -353,9 +353,9 @@ def _get_legacy_hook_marks(
if TYPE_CHECKING:
# abuse typeguard from importlib to avoid massive method type union thats lacking a alias
assert inspect.isroutine(method)
known_marks: set[str] = {m.name for m in getattr(method, "pytestmark", [])}
must_warn: list[str] = []
opts: dict[str, bool] = {}
known_marks: Set[str] = {m.name for m in getattr(method, "pytestmark", [])}
must_warn: List[str] = []
opts: Dict[str, bool] = {}
for opt_name in opt_names:
opt_attr = getattr(method, opt_name, AttributeError)
if opt_attr is not AttributeError:
Expand Down
41 changes: 21 additions & 20 deletions src/_pytest/fixtures.py
Original file line number Diff line number Diff line change
Expand Up @@ -1404,6 +1404,26 @@ def pytest_addoption(parser: Parser) -> None:
)


def _get_direct_parametrize_args(node: nodes.Node) -> List[str]:
"""Return all direct parametrization arguments of a node, so we don't
mistake them for fixtures.
Check https://github.com/pytest-dev/pytest/issues/5036.
These things are done later as well when dealing with parametrization
so this could be improved.
"""
parametrize_argnames: List[str] = []
for marker in node.iter_markers(name="parametrize"):
if not marker.kwargs.get("indirect", False):
p_argnames, _ = ParameterSet._parse_parametrize_args(
*marker.args, **marker.kwargs
)
parametrize_argnames.extend(p_argnames)

return parametrize_argnames


class FixtureManager:
"""pytest fixture definitions and information is stored and managed
from this class.
Expand Down Expand Up @@ -1453,25 +1473,6 @@ def __init__(self, session: "Session") -> None:
}
session.config.pluginmanager.register(self, "funcmanage")

def _get_direct_parametrize_args(self, node: nodes.Node) -> List[str]:
"""Return all direct parametrization arguments of a node, so we don't
mistake them for fixtures.
Check https://github.com/pytest-dev/pytest/issues/5036.
These things are done later as well when dealing with parametrization
so this could be improved.
"""
parametrize_argnames: List[str] = []
for marker in node.iter_markers(name="parametrize"):
if not marker.kwargs.get("indirect", False):
p_argnames, _ = ParameterSet._parse_parametrize_args(
*marker.args, **marker.kwargs
)
parametrize_argnames.extend(p_argnames)

return parametrize_argnames

def getfixtureinfo(
self,
node: nodes.Item,
Expand Down Expand Up @@ -1503,7 +1504,7 @@ def getfixtureinfo(
)
initialnames = usefixtures + argnames
initialnames, names_closure, arg2fixturedefs = self.getfixtureclosure(
initialnames, node, ignore_args=self._get_direct_parametrize_args(node)
initialnames, node, ignore_args=_get_direct_parametrize_args(node)
)
return FuncFixtureInfo(argnames, initialnames, names_closure, arg2fixturedefs)

Expand Down

0 comments on commit 448563c

Please sign in to comment.