diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -1253,6 +1253,14 @@ file=sys.stderr) return False +def get_test_runner(the_module): + # If the test has a test_main, that will run the appropriate tests. + # If not, use normal unittest test loading. + test_runner = getattr(the_module, "test_main", None) + if test_runner is None: + tests = unittest.TestLoader().loadTestsFromModule(the_module) + test_runner = lambda: support.run_unittest(tests) + return test_runner def runtest_inner(test, verbose, quiet, huntrleaks=False, display_failure=True): @@ -1269,15 +1277,10 @@ with saved_test_environment(test, verbose, quiet) as environment: start_time = time.time() the_module = importlib.import_module(abstest) - # If the test has a test_main, that will run the appropriate - # tests. If not, use normal unittest test loading. - test_runner = getattr(the_module, "test_main", None) - if test_runner is None: - tests = unittest.TestLoader().loadTestsFromModule(the_module) - test_runner = lambda: support.run_unittest(tests) + test_runner = get_test_runner(the_module) test_runner() if huntrleaks: - refleak = dash_R(the_module, test, test_runner, huntrleaks) + refleak = dash_R(the_module, test, huntrleaks) test_time = time.time() - start_time except support.ResourceDenied as msg: if not quiet: @@ -1352,7 +1355,7 @@ print(("%r left behind %s %r and it couldn't be " "removed: %s" % (testname, kind, name, msg)), file=sys.stderr) -def dash_R(the_module, test, indirect_test, huntrleaks): +def dash_R(the_module, test, huntrleaks): """Run a test multiple times, looking for reference leaks. Returns: @@ -1393,7 +1396,8 @@ print(("1234567890"*(repcount//10 + 1))[:repcount], file=sys.stderr) sys.stderr.flush() for i in range(repcount): - indirect_test() + test_runner = get_test_runner(the_module) + test_runner() alloc_after, rc_after = dash_R_cleanup(fs, ps, pic, zdc, abcs) sys.stderr.write('.') sys.stderr.flush() diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -614,6 +614,8 @@ ... test_function_2() ... end = 1 + >>> from bdb import Breakpoint + >>> Breakpoint.next = 1 >>> with PdbTestInput(['break test_function_2', ... 'continue', ... 'return',