2
2
import os
3
3
import sys
4
4
from pathlib import Path
5
+ from typing import Set , Tuple
5
6
6
7
import astroid
7
8
import pylint
17
18
_is_same_module ,
18
19
)
19
20
from . import BasePytestChecker
21
+ from .types import FixtureDict , replacement_add_message
20
22
21
23
# TODO: support pytest python_files configuration
22
- FILE_NAME_PATTERNS = ("test_*.py" , "*_test.py" )
24
+ FILE_NAME_PATTERNS : Tuple [ str , ...] = ("test_*.py" , "*_test.py" )
23
25
ARGUMENT_ARE_KEYWORD_ONLY = (
24
26
"https://docs.pytest.org/en/stable/deprecations.html#pytest-fixture-arguments-are-keyword-only"
25
27
)
26
28
27
29
28
30
class FixtureCollector :
29
- fixtures = {}
30
- errors = set ()
31
+ # Same as ``_pytest.fixtures.FixtureManager._arg2fixturedefs``.
32
+ fixtures : FixtureDict = {}
33
+ errors : Set [pytest .CollectReport ] = set ()
31
34
32
35
def pytest_sessionfinish (self , session ):
33
36
# pylint: disable=protected-access
@@ -73,10 +76,13 @@ class FixtureChecker(BasePytestChecker):
73
76
),
74
77
}
75
78
76
- _pytest_fixtures = {}
77
- _invoked_with_func_args = set ()
78
- _invoked_with_usefixtures = set ()
79
- _original_add_message = callable
79
+ # Store all fixtures discovered by pytest session
80
+ _pytest_fixtures : FixtureDict = {}
81
+ # Stores all used function arguments
82
+ _invoked_with_func_args : Set [str ] = set ()
83
+ # Stores all invoked fixtures through @pytest.mark.usefixture(...)
84
+ _invoked_with_usefixtures : Set [str ] = set ()
85
+ _original_add_message = replacement_add_message
80
86
81
87
def open (self ):
82
88
# patch VariablesChecker.add_message
@@ -87,7 +93,7 @@ def close(self):
87
93
"""restore & reset class attr for testing"""
88
94
# restore add_message
89
95
VariablesChecker .add_message = FixtureChecker ._original_add_message
90
- FixtureChecker ._original_add_message = callable
96
+ FixtureChecker ._original_add_message = replacement_add_message
91
97
92
98
# reset fixture info storage
93
99
FixtureChecker ._pytest_fixtures = {}
@@ -100,14 +106,9 @@ def visit_module(self, node):
100
106
- invoke pytest session to collect available fixtures
101
107
- create containers for the module to store args and fixtures
102
108
"""
103
- # storing all fixtures discovered by pytest session
104
- FixtureChecker ._pytest_fixtures = {} # Dict[List[_pytest.fixtures.FixtureDef]]
105
-
106
- # storing all used function arguments
107
- FixtureChecker ._invoked_with_func_args = set () # Set[str]
108
-
109
- # storing all invoked fixtures through @pytest.mark.usefixture(...)
110
- FixtureChecker ._invoked_with_usefixtures = set () # Set[str]
109
+ FixtureChecker ._pytest_fixtures = {}
110
+ FixtureChecker ._invoked_with_func_args = set ()
111
+ FixtureChecker ._invoked_with_usefixtures = set ()
111
112
112
113
is_test_module = False
113
114
for pattern in FILE_NAME_PATTERNS :
0 commit comments