Skip to content

Commit 12ca7e6

Browse files
authored
pythongh-109413: Enable strict_optional for libregrtest/main.py (python#126394)
1 parent 3c99969 commit 12ca7e6

File tree

4 files changed

+21
-8
lines changed

4 files changed

+21
-8
lines changed

Lib/test/libregrtest/cmdline.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ def __init__(self, **kwargs) -> None:
148148
self.randomize = False
149149
self.fromfile = None
150150
self.fail_env_changed = False
151-
self.use_resources = None
151+
self.use_resources: list[str] = []
152152
self.trace = False
153153
self.coverdir = 'coverage'
154154
self.runleaks = False
@@ -403,8 +403,6 @@ def _parse_args(args, **kwargs):
403403
raise TypeError('%r is an invalid keyword argument '
404404
'for this function' % k)
405405
setattr(ns, k, v)
406-
if ns.use_resources is None:
407-
ns.use_resources = []
408406

409407
parser = _create_parser()
410408
# Issue #14191: argparse doesn't support "intermixed" positional and

Lib/test/libregrtest/main.py

+17-2
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def __init__(self, ns: Namespace, _add_python_opts: bool = False):
123123
self.python_cmd = None
124124
self.coverage: bool = ns.trace
125125
self.coverage_dir: StrPath | None = ns.coverdir
126-
self.tmp_dir: StrPath | None = ns.tempdir
126+
self._tmp_dir: StrPath | None = ns.tempdir
127127

128128
# Randomize
129129
self.randomize: bool = ns.randomize
@@ -159,6 +159,8 @@ def log(self, line: str = '') -> None:
159159
self.logger.log(line)
160160

161161
def find_tests(self, tests: TestList | None = None) -> tuple[TestTuple, TestList | None]:
162+
if tests is None:
163+
tests = []
162164
if self.single_test_run:
163165
self.next_single_filename = os.path.join(self.tmp_dir, 'pynexttest')
164166
try:
@@ -454,6 +456,11 @@ def finalize_tests(self, coverage: trace.CoverageResults | None) -> None:
454456
self.results.write_junit(self.junit_filename)
455457

456458
def display_summary(self) -> None:
459+
if self.first_runtests is None:
460+
raise ValueError(
461+
"Should never call `display_summary()` before calling `_run_test()`"
462+
)
463+
457464
duration = time.perf_counter() - self.logger.start_time
458465
filtered = bool(self.match_tests)
459466

@@ -708,7 +715,15 @@ def _init(self):
708715

709716
strip_py_suffix(self.cmdline_args)
710717

711-
self.tmp_dir = get_temp_dir(self.tmp_dir)
718+
self._tmp_dir = get_temp_dir(self._tmp_dir)
719+
720+
@property
721+
def tmp_dir(self) -> StrPath:
722+
if self._tmp_dir is None:
723+
raise ValueError(
724+
"Should never use `.tmp_dir` before calling `.main()`"
725+
)
726+
return self._tmp_dir
712727

713728
def main(self, tests: TestList | None = None) -> NoReturn:
714729
if self.want_add_python_opts:

Lib/test/libregrtest/mypy.ini

+1-3
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,8 @@ disallow_untyped_defs = False
2222
check_untyped_defs = False
2323
warn_return_any = False
2424

25-
disable_error_code = return
26-
2725
# Enable --strict-optional for these ASAP:
28-
[mypy-Lib.test.libregrtest.main.*,Lib.test.libregrtest.run_workers.*]
26+
[mypy-Lib.test.libregrtest.run_workers.*]
2927
strict_optional = False
3028

3129
# Various internal modules that typeshed deliberately doesn't have stubs for:

Lib/test/libregrtest/run_workers.py

+2
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ def _run_process(self, runtests: WorkerRunTests, output_fd: int,
211211
# on reading closed stdout
212212
raise ExitThread
213213
raise
214+
return None
214215
except:
215216
self._kill()
216217
raise
@@ -544,6 +545,7 @@ def _get_result(self) -> QueueOutput | None:
544545
running = get_running(self.workers)
545546
if running:
546547
self.log(running)
548+
return None
547549

548550
def display_result(self, mp_result: MultiprocessResult) -> None:
549551
result = mp_result.result

0 commit comments

Comments
 (0)