[2.7] bpo-30283: regrtest: backport test_slow_interrupted() and test_… · python/cpython@a5bb624

@@ -316,7 +316,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,

316316

'use=', 'threshold=', 'trace', 'coverdir=', 'nocoverdir',

317317

'runleaks', 'huntrleaks=', 'memlimit=', 'randseed=',

318318

'multiprocess=', 'slaveargs=', 'forever', 'header', 'pgo',

319-

'failfast', 'match=', 'testdir=', 'list-tests'])

319+

'failfast', 'match=', 'testdir=', 'list-tests', 'coverage'])

320320

except getopt.error, msg:

321321

usage(2, msg)

322322

@@ -531,8 +531,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,

531531532532

if trace:

533533

import trace

534-

tracer = trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix],

535-

trace=False, count=True)

534+

tracer = trace.Trace(trace=False, count=True)

536535537536

test_times = []

538537

test_support.use_resources = use_resources

@@ -544,7 +543,7 @@ def accumulate_result(test, result):

544543

test_times.append((test_time, test))

545544

if ok == PASSED:

546545

good.append(test)

547-

elif ok == FAILED:

546+

elif ok in (FAILED, CHILD_ERROR):

548547

bad.append(test)

549548

elif ok == ENV_CHANGED:

550549

environment_changed.append(test)

@@ -553,9 +552,8 @@ def accumulate_result(test, result):

553552

elif ok == RESOURCE_DENIED:

554553

skipped.append(test)

555554

resource_denieds.append(test)

556-

else:

557-

# CHILD_ERROR

558-

bad.append(test)

555+

elif ok != INTERRUPTED:

556+

raise ValueError("invalid test result: %r" % ok)

559557560558

if forever:

561559

def test_forever(tests=list(selected)):

@@ -740,19 +738,26 @@ def get_running(workers):

740738

if previous_test:

741739

text = '%s -- %s' % (text, previous_test)

742740

display_progress(test_index, text)

741+742+

def local_runtest():

743+

result = runtest(test, verbose, quiet, huntrleaks, None, pgo,

744+

failfast=failfast,

745+

match_tests=match_tests,

746+

testdir=testdir)

747+

accumulate_result(test, result)

748+

return result

749+750+

start_time = time.time()

743751

if trace:

744752

# If we're tracing code coverage, then we don't exit with status

745753

# if on a false return value from main.

746-

tracer.runctx('runtest(test, verbose, quiet, testdir=testdir)',

747-

globals=globals(), locals=vars())

754+

ns = dict(locals())

755+

tracer.runctx('result = local_runtest()',

756+

globals=globals(), locals=ns)

757+

result = ns['result']

748758

else:

749-

start_time = time.time()

750759

try:

751-

result = runtest(test, verbose, quiet, huntrleaks, None, pgo,

752-

failfast=failfast,

753-

match_tests=match_tests,

754-

testdir=testdir)

755-

accumulate_result(test, result)

760+

result = local_runtest()

756761

if verbose3 and result[0] == FAILED:

757762

if not pgo:

758763

print "Re-running test %r in verbose mode" % test

@@ -764,14 +769,14 @@ def get_running(workers):

764769

except:

765770

raise

766771767-

previous_test = format_test_result(test, result[0])

768-

test_time = time.time() - start_time

769-

if test_time >= PROGRESS_MIN_TIME:

770-

previous_test = "%s in %s" % (previous_test,

771-

format_duration(test_time))

772-

elif result[0] == PASSED:

773-

# be quiet: say nothing if the test passed shortly

774-

previous_test = None

772+

test_time = time.time() - start_time

773+

previous_test = format_test_result(test, result[0])

774+

if test_time >= PROGRESS_MIN_TIME:

775+

previous_test = "%s in %s" % (previous_test,

776+

format_duration(test_time))

777+

elif result[0] == PASSED:

778+

# be quiet: say nothing if the test passed shortly

779+

previous_test = None

775780776781

if findleaks:

777782

gc.collect()