Issue #26295: When using "python3 -m test --testdir=TESTDIR", regrtest doesn't
add "test." prefix to test module names.
regrtest also prepends testdir to sys.path.
diff --git a/Lib/test/libregrtest/runtest.py b/Lib/test/libregrtest/runtest.py
index daff476..601f2b2 100644
--- a/Lib/test/libregrtest/runtest.py
+++ b/Lib/test/libregrtest/runtest.py
@@ -116,7 +116,7 @@
try:
sys.stdout = stream
sys.stderr = stream
- result = runtest_inner(test, verbose, quiet, huntrleaks,
+ result = runtest_inner(ns, test, verbose, quiet, huntrleaks,
display_failure=False, pgo=pgo)
if result[0] == FAILED:
output = stream.getvalue()
@@ -127,7 +127,7 @@
sys.stderr = orig_stderr
else:
support.verbose = verbose # Tell tests to be moderately quiet
- result = runtest_inner(test, verbose, quiet, huntrleaks,
+ result = runtest_inner(ns, test, verbose, quiet, huntrleaks,
display_failure=not verbose, pgo=pgo)
return result
finally:
@@ -137,14 +137,14 @@
runtest.stringio = None
-def runtest_inner(test, verbose, quiet,
+def runtest_inner(ns, test, verbose, quiet,
huntrleaks=False, display_failure=True, *, pgo=False):
support.unload(test)
test_time = 0.0
refleak = False # True if the test leaked references.
try:
- if test.startswith('test.'):
+ if test.startswith('test.') or ns.testdir:
abstest = test
else:
# Always import it from the test package
diff --git a/Lib/test/libregrtest/setup.py b/Lib/test/libregrtest/setup.py
index de52bb5..1d24531 100644
--- a/Lib/test/libregrtest/setup.py
+++ b/Lib/test/libregrtest/setup.py
@@ -29,6 +29,11 @@
replace_stdout()
support.record_original_stdout(sys.stdout)
+ if ns.testdir:
+ # Prepend test directory to sys.path, so runtest() will be able
+ # to locate tests
+ sys.path.insert(0, os.path.abspath(ns.testdir))
+
# Some times __path__ and __file__ are not absolute (e.g. while running from
# Lib/) and, if we change the CWD to run the tests in a temporary dir, some
# imports might fail. This affects only the modules imported before os.chdir().