diff --git a/approvaltests/namer/stack_frame_namer.py b/approvaltests/namer/stack_frame_namer.py index 6359550d..72d19b35 100644 --- a/approvaltests/namer/stack_frame_namer.py +++ b/approvaltests/namer/stack_frame_namer.py @@ -45,7 +45,10 @@ def get_test_frame_index(caller: List[FrameInfo]) -> int: def is_pytest_test(frame: FrameInfo) -> bool: method_name = frame[3] patterns = PytestConfig.test_naming_patterns - + return StackFrameNamer._is_match_for_pytest(method_name, patterns) + @staticmethod + def _is_match_for_pytest(method_name: str, patterns: List[str]) -> bool: + # Do not modify this method, so we can compare with original code # taken from pytest/python.py (class PyCollector) for pattern in patterns: if method_name.startswith(pattern): @@ -54,12 +57,12 @@ def is_pytest_test(frame: FrameInfo) -> bool: # because this is called for every name in each collected module, # and fnmatch is somewhat expensive to call. elif ( - "*" in pattern or "?" in pattern or "[" in pattern + "*" in pattern or "?" in pattern or "[" in pattern ) and fnmatch.fnmatch(method_name, pattern): return True return False - + @staticmethod def is_unittest_test(frame: FrameInfo) -> bool: method_name = frame[3] @@ -107,3 +110,5 @@ def get_test_frame(cls) -> FrameInfo: calling_stack = inspect.stack(1) frame = StackFrameNamer.get_test_frame_index(calling_stack) return calling_stack[frame] + +