mirror of https://github.com/python/cpython.git
gh-110367: Make regrtest --verbose3 compatible with --huntrleaks -jN (#111577)
"./python -m test -j1 -R 3:3 --verbose3" now works as expected, since run_single_test() does not replace sys.stdout with StringIO in this case.
This commit is contained in:
parent
ef83b3fc00
commit
d9a5530d23
|
@ -493,10 +493,16 @@ def _parse_args(args, **kwargs):
|
||||||
ns.randomize = True
|
ns.randomize = True
|
||||||
if ns.verbose:
|
if ns.verbose:
|
||||||
ns.header = True
|
ns.header = True
|
||||||
if ns.huntrleaks and ns.verbose3:
|
# When -jN option is used, a worker process does not use --verbose3
|
||||||
|
# and so -R 3:3 -jN --verbose3 just works as expected: there is no false
|
||||||
|
# alarm about memory leak.
|
||||||
|
if ns.huntrleaks and ns.verbose3 and ns.use_mp is None:
|
||||||
ns.verbose3 = False
|
ns.verbose3 = False
|
||||||
|
# run_single_test() replaces sys.stdout with io.StringIO if verbose3
|
||||||
|
# is true. In this case, huntrleaks sees an write into StringIO as
|
||||||
|
# a memory leak, whereas it is not (gh-71290).
|
||||||
print("WARNING: Disable --verbose3 because it's incompatible with "
|
print("WARNING: Disable --verbose3 because it's incompatible with "
|
||||||
"--huntrleaks: see http://bugs.python.org/issue27103",
|
"--huntrleaks without -jN option",
|
||||||
file=sys.stderr)
|
file=sys.stderr)
|
||||||
if ns.forever:
|
if ns.forever:
|
||||||
# --forever implies --failfast
|
# --forever implies --failfast
|
||||||
|
|
|
@ -2120,6 +2120,29 @@ def test_crash(self):
|
||||||
self.assertIn(f"Exit code {exitcode} (SIGSEGV)", output)
|
self.assertIn(f"Exit code {exitcode} (SIGSEGV)", output)
|
||||||
self.check_line(output, "just before crash!", full=True, regex=False)
|
self.check_line(output, "just before crash!", full=True, regex=False)
|
||||||
|
|
||||||
|
def test_verbose3(self):
|
||||||
|
code = textwrap.dedent(r"""
|
||||||
|
import unittest
|
||||||
|
from test import support
|
||||||
|
|
||||||
|
class VerboseTests(unittest.TestCase):
|
||||||
|
def test_pass(self):
|
||||||
|
print("SPAM SPAM SPAM")
|
||||||
|
""")
|
||||||
|
testname = self.create_test(code=code)
|
||||||
|
|
||||||
|
# Run sequentially
|
||||||
|
output = self.run_tests("--verbose3", testname)
|
||||||
|
self.check_executed_tests(output, testname, stats=1)
|
||||||
|
self.assertNotIn('SPAM SPAM SPAM', output)
|
||||||
|
|
||||||
|
# -R option needs a debug build
|
||||||
|
if support.Py_DEBUG:
|
||||||
|
# Check for reference leaks, run in parallel
|
||||||
|
output = self.run_tests("-R", "3:3", "-j1", "--verbose3", testname)
|
||||||
|
self.check_executed_tests(output, testname, stats=1, parallel=True)
|
||||||
|
self.assertNotIn('SPAM SPAM SPAM', output)
|
||||||
|
|
||||||
|
|
||||||
class TestUtils(unittest.TestCase):
|
class TestUtils(unittest.TestCase):
|
||||||
def test_format_duration(self):
|
def test_format_duration(self):
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
Make regrtest ``--verbose3`` option compatible with ``--huntrleaks -jN``
|
||||||
|
options. The ``./python -m test -j1 -R 3:3 --verbose3`` command now works as
|
||||||
|
expected. Patch by Victor Stinner.
|
Loading…
Reference in New Issue