Skip to content

Commit c6022aa

Browse files
authored
Use the standard config parser instead a new one in functional tests (#6572)
1 parent db911fd commit c6022aa

File tree

3 files changed

+44
-12
lines changed

3 files changed

+44
-12
lines changed

.pyenchant_pylint_custom_dict.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ tbump
299299
tempfile
300300
testcase
301301
testdata
302+
testoptions
302303
tmp
303304
tokencheckers
304305
tokeninfo

pylint/testutils/functional/test_file.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class FunctionalTestFile:
6262
def __init__(self, directory: str, filename: str) -> None:
6363
self._directory = directory
6464
self.base = filename.replace(".py", "")
65+
# TODO: 2.15: Deprecate FunctionalTestFile.options and related code
6566
self.options: TestFileOptions = {
6667
"min_pyver": (2, 5),
6768
"max_pyver": (4, 0),

pylint/testutils/lint_module_test.py

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,6 @@ def __init__(
5858
pass
5959

6060
self._test_file = test_file
61-
self._check_end_position = (
62-
sys.version_info >= self._test_file.options["min_pyver_end_position"]
63-
)
64-
# TODO: PY3.9: PyPy supports end_lineno from 3.9 and above
65-
if self._check_end_position and IS_PYPY:
66-
self._check_end_position = sys.version_info >= (3, 9) # pragma: no cover
6761
try:
6862
args = [test_file.source]
6963
except NoFileError:
@@ -77,9 +71,45 @@ def __init__(
7771
messages_to_enable.add("fatal")
7872
messages_to_enable.add("syntax-error")
7973
args.extend(["--disable=all", f"--enable={','.join(messages_to_enable)}"])
74+
75+
# Add testoptions
76+
self._linter._arg_parser.add_argument(
77+
"--min_pyver", type=parse_python_version, default=(2, 5)
78+
)
79+
self._linter._arg_parser.add_argument(
80+
"--max_pyver", type=parse_python_version, default=(4, 0)
81+
)
82+
self._linter._arg_parser.add_argument(
83+
"--min_pyver_end_position", type=parse_python_version, default=(3, 8)
84+
)
85+
self._linter._arg_parser.add_argument(
86+
"--requires", type=lambda s: [i.strip() for i in s.split(",")], default=[]
87+
)
88+
self._linter._arg_parser.add_argument(
89+
"--except_implementations",
90+
type=lambda s: [i.strip() for i in s.split(",")],
91+
default=[],
92+
)
93+
self._linter._arg_parser.add_argument(
94+
"--exclude_platforms",
95+
type=lambda s: [i.strip() for i in s.split(",")],
96+
default=[],
97+
)
98+
self._linter._arg_parser.add_argument(
99+
"--exclude_from_minimal_messages_config", default=False
100+
)
101+
80102
_config_initialization(
81103
self._linter, args_list=args, config_file=rc_file, reporter=_test_reporter
82104
)
105+
106+
self._check_end_position = (
107+
sys.version_info >= self._linter.config.min_pyver_end_position
108+
)
109+
# TODO: PY3.9: PyPy supports end_lineno from 3.9 and above
110+
if self._check_end_position and IS_PYPY:
111+
self._check_end_position = sys.version_info >= (3, 9) # pragma: no cover
112+
83113
self._config = config
84114

85115
def setUp(self) -> None:
@@ -88,26 +118,26 @@ def setUp(self) -> None:
88118
f"Test cannot run with Python {sys.version.split(' ', maxsplit=1)[0]}."
89119
)
90120
missing = []
91-
for requirement in self._test_file.options["requires"]:
121+
for requirement in self._linter.config.requires:
92122
try:
93123
__import__(requirement)
94124
except ImportError:
95125
missing.append(requirement)
96126
if missing:
97127
pytest.skip(f"Requires {','.join(missing)} to be present.")
98-
except_implementations = self._test_file.options["except_implementations"]
128+
except_implementations = self._linter.config.except_implementations
99129
if except_implementations:
100130
if platform.python_implementation() in except_implementations:
101131
msg = "Test cannot run with Python implementation %r"
102132
pytest.skip(msg % platform.python_implementation())
103-
excluded_platforms = self._test_file.options["exclude_platforms"]
133+
excluded_platforms = self._linter.config.exclude_platforms
104134
if excluded_platforms:
105135
if sys.platform.lower() in excluded_platforms:
106136
pytest.skip(f"Test cannot run on platform {sys.platform!r}")
107137
if (
108138
self._config
109139
and self._config.getoption("minimal_messages_config")
110-
and self._test_file.options["exclude_from_minimal_messages_config"]
140+
and self._linter.config.exclude_from_minimal_messages_config
111141
):
112142
pytest.skip("Test excluded from --minimal-messages-config")
113143

@@ -116,8 +146,8 @@ def runTest(self) -> None:
116146

117147
def _should_be_skipped_due_to_version(self) -> bool:
118148
return (
119-
sys.version_info < self._test_file.options["min_pyver"]
120-
or sys.version_info > self._test_file.options["max_pyver"]
149+
sys.version_info < self._linter.config.min_pyver
150+
or sys.version_info > self._linter.config.max_pyver
121151
)
122152

123153
def __str__(self) -> str:

0 commit comments

Comments
 (0)