gh-109162: libregrtest: fix _decode_worker_job() (#109202)

Decode also HuntRefleak() object inside the RunTests object.

Add an unit test on huntrleaks with multiprocessing (-R -jN).
This commit is contained in:
Victor Stinner 2023-09-10 00:51:24 +02:00 committed by GitHub
parent d3ed9921cd
commit 24fa8f2046
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 5 deletions

View file

@ -1018,12 +1018,16 @@ class ArgsTestCase(BaseTestCase):
stats=TestStats(4, 1),
forever=True)
def check_leak(self, code, what):
def check_leak(self, code, what, *, multiprocessing=False):
test = self.create_test('huntrleaks', code=code)
filename = 'reflog.txt'
self.addCleanup(os_helper.unlink, filename)
output = self.run_tests('--huntrleaks', '6:3:', test,
cmd = ['--huntrleaks', '6:3:']
if multiprocessing:
cmd.append('-j1')
cmd.append(test)
output = self.run_tests(*cmd,
exitcode=EXITCODE_BAD_TEST,
stderr=subprocess.STDOUT)
self.check_executed_tests(output, [test], failed=test, stats=1)
@ -1039,7 +1043,7 @@ class ArgsTestCase(BaseTestCase):
self.assertIn(line2, reflog)
@unittest.skipUnless(support.Py_DEBUG, 'need a debug build')
def test_huntrleaks(self):
def check_huntrleaks(self, *, multiprocessing: bool):
# test --huntrleaks
code = textwrap.dedent("""
import unittest
@ -1050,7 +1054,13 @@ class ArgsTestCase(BaseTestCase):
def test_leak(self):
GLOBAL_LIST.append(object())
""")
self.check_leak(code, 'references')
self.check_leak(code, 'references', multiprocessing=multiprocessing)
def test_huntrleaks(self):
self.check_huntrleaks(multiprocessing=False)
def test_huntrleaks_mp(self):
self.check_huntrleaks(multiprocessing=True)
@unittest.skipUnless(support.Py_DEBUG, 'need a debug build')
def test_huntrleaks_fd_leak(self):