Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Android/android.py
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,8 @@ async def gradle_task(context):
# Randomization is disabled because order-dependent failures are
# much less likely to pass on a rerun in single-process mode.
"-m", "test",
f"--{context.ci_mode}-ci", "--single-process", "--no-randomize"
f"--{context.ci_mode}-ci", "--single-process", "--no-randomize",
"--pythoninfo",
]

if not any(arg in context.args for arg in ["-c", "-m"]):
Expand Down
2 changes: 2 additions & 0 deletions Lib/test/libregrtest/cmdline.py
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,8 @@ def _create_parser():
help='remove old test_python_* directories')
group.add_argument('--bisect', action='store_true',
help='if some tests fail, run test.bisect_cmd on them')
group.add_argument('--pythoninfo', action='store_true',
help="run python -m test.pythoninfo before tests")
group.add_argument('--dont-add-python-opts', dest='_add_python_opts',
action='store_false',
help="internal option, don't use it")
Expand Down
23 changes: 16 additions & 7 deletions Lib/test/libregrtest/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
strip_py_suffix, count, format_duration,
printlist, get_temp_dir, get_work_dir, exit_timeout,
display_header, cleanup_temp_dir, print_warning,
is_cross_compiled, get_host_runner,
is_cross_compiled, get_host_runner, display_title,
EXIT_TIMEOUT)


Expand Down Expand Up @@ -126,6 +126,7 @@ def __init__(self, ns: Namespace, _add_python_opts: bool = False):
self.coverage: bool = ns.trace
self.coverage_dir: StrPath | None = ns.coverdir
self._tmp_dir: StrPath | None = ns.tempdir
self.pythoninfo: bool = ns.pythoninfo

# Randomize
self.randomize: bool = ns.randomize
Expand Down Expand Up @@ -322,9 +323,7 @@ def _run_bisect(self, runtests: RunTests, test: str, progress: str) -> bool:
title = f"Bisect {test}"
if progress:
title = f"{title} ({progress})"
print(title)
print("#" * len(title))
print()
display_title(title)

cmd = runtests.create_python_cmd()
cmd.extend([
Expand All @@ -345,9 +344,7 @@ def _run_bisect(self, runtests: RunTests, test: str, progress: str) -> bool:
exitcode = proc.returncode

title = f"{title}: exit code {exitcode}"
print(title)
print("#" * len(title))
print(flush=True)
display_title(title)

if exitcode:
print(f"Bisect failed with exit code {exitcode}")
Expand Down Expand Up @@ -752,6 +749,15 @@ def tmp_dir(self) -> StrPath:
)
return self._tmp_dir

def run_pythoninfo(self):
from test import pythoninfo
try:
pythoninfo.main()
except SystemExit:
# Ignore non-zero exit code on purpose
pass
print()

def main(self, tests: TestList | None = None) -> NoReturn:
if self.want_add_python_opts:
self._add_python_opts()
Expand All @@ -765,6 +771,9 @@ def main(self, tests: TestList | None = None) -> NoReturn:
if self.want_wait:
input("Press any key to continue...")

if self.pythoninfo:
self.run_pythoninfo()

setup_test_dir(self.test_dir)
selected, tests = self.find_tests(tests)

Expand Down
6 changes: 6 additions & 0 deletions Lib/test/libregrtest/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -746,3 +746,9 @@ def _sanitize_xml_replace(regs):

def sanitize_xml(text: str) -> str:
return ILLEGAL_XML_CHARS_RE.sub(_sanitize_xml_replace, text)


def display_title(title):
print(title)
print("#" * len(title))
print(flush=True)
4 changes: 2 additions & 2 deletions Lib/test/pythoninfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -1103,9 +1103,9 @@ def collect_info(info):


def dump_info(info, file=None):
title = "Python debug information"
title = "Python build information"
print(title)
print("=" * len(title))
print("#" * len(title))
print()

infos = info.get_infos()
Expand Down
12 changes: 12 additions & 0 deletions Lib/test/test_regrtest.py
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,13 @@ def test_single_process(self):
self.assertEqual(regrtest.num_workers, 0)
self.assertTrue(regrtest.single_process)

def test_pythoninfo(self):
ns = self.parse_args([])
self.assertFalse(ns.pythoninfo)

ns = self.parse_args(['--pythoninfo'])
self.assertTrue(ns.pythoninfo)


@dataclasses.dataclass(slots=True)
class Rerun:
Expand Down Expand Up @@ -2427,6 +2434,11 @@ def test_pgo_exclude(self):
self.assertNotIn('test_re', tests)
self.assertEqual(len(tests), len(pgo_tests) - 1)

def test_pythoninfo(self):
testname = self.create_test()
output = self.run_tests('--pythoninfo', testname)
self.assertIn("Python build information", output)


class TestUtils(unittest.TestCase):
def test_format_duration(self):
Expand Down
Loading