Skip to content

Commit effedb5

Browse files
authored
[3.13] gh-109413: Enable strict_optional for libregrtest/main.py (GH-126394) (#126802)
(cherry picked from commit 12ca7e6)
1 parent 64846f1 commit effedb5

File tree

4 files changed

+22
-9
lines changed

4 files changed

+22
-9
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

+18-3
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=''):
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:
@@ -453,7 +455,12 @@ def finalize_tests(self, coverage: trace.CoverageResults | None) -> None:
453455
if self.junit_filename:
454456
self.results.write_junit(self.junit_filename)
455457

456-
def display_summary(self):
458+
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

@@ -711,7 +718,15 @@ def _init(self):
711718

712719
strip_py_suffix(self.cmdline_args)
713720

714-
self.tmp_dir = get_temp_dir(self.tmp_dir)
721+
self._tmp_dir = get_temp_dir(self._tmp_dir)
722+
723+
@property
724+
def tmp_dir(self) -> StrPath:
725+
if self._tmp_dir is None:
726+
raise ValueError(
727+
"Should never use `.tmp_dir` before calling `.main()`"
728+
)
729+
return self._tmp_dir
715730

716731
def main(self, tests: TestList | None = None):
717732
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
@@ -205,6 +205,7 @@ def _run_process(self, runtests: WorkerRunTests, output_fd: int,
205205
# on reading closed stdout
206206
raise ExitThread
207207
raise
208+
return None
208209
except:
209210
self._kill()
210211
raise
@@ -538,6 +539,7 @@ def _get_result(self) -> QueueOutput | None:
538539
running = get_running(self.workers)
539540
if running:
540541
self.log(running)
542+
return None
541543

542544
def display_result(self, mp_result: MultiprocessResult) -> None:
543545
result = mp_result.result

0 commit comments

Comments
 (0)