@@ -105,26 +105,30 @@ def __init__(self):
105
105
# used by --junit-xml
106
106
self .testsuite_xml = None
107
107
108
- def accumulate_result (self , test , result ):
109
- ok , test_time , xml_data = result
108
+ def accumulate_result (self , result ):
109
+ test_name = result .test_name
110
+ ok = result .result
111
+
110
112
if ok not in (CHILD_ERROR , INTERRUPTED ):
111
- self .test_times .append ((test_time , test ))
113
+ self .test_times .append ((result .test_time , test_name ))
114
+
112
115
if ok == PASSED :
113
- self .good .append (test )
116
+ self .good .append (test_name )
114
117
elif ok in (FAILED , CHILD_ERROR ):
115
- self .bad .append (test )
118
+ self .bad .append (test_name )
116
119
elif ok == ENV_CHANGED :
117
- self .environment_changed .append (test )
120
+ self .environment_changed .append (test_name )
118
121
elif ok == SKIPPED :
119
- self .skipped .append (test )
122
+ self .skipped .append (test_name )
120
123
elif ok == RESOURCE_DENIED :
121
- self .skipped .append (test )
122
- self .resource_denieds .append (test )
124
+ self .skipped .append (test_name )
125
+ self .resource_denieds .append (test_name )
123
126
elif ok == TEST_DID_NOT_RUN :
124
- self .run_no_tests .append (test )
127
+ self .run_no_tests .append (test_name )
125
128
elif ok != INTERRUPTED :
126
129
raise ValueError ("invalid test result: %r" % ok )
127
130
131
+ xml_data = result .xml_data
128
132
if xml_data :
129
133
import xml .etree .ElementTree as ET
130
134
for e in xml_data :
@@ -134,7 +138,7 @@ def accumulate_result(self, test, result):
134
138
print (xml_data , file = sys .__stderr__ )
135
139
raise
136
140
137
- def display_progress (self , test_index , test ):
141
+ def display_progress (self , test_index , text ):
138
142
if self .ns .quiet :
139
143
return
140
144
@@ -143,7 +147,7 @@ def display_progress(self, test_index, test):
143
147
fails = len (self .bad ) + len (self .environment_changed )
144
148
if fails and not self .ns .pgo :
145
149
line = f"{ line } /{ fails } "
146
- line = f"[{ line } ] { test } "
150
+ line = f"[{ line } ] { text } "
147
151
148
152
# add the system load prefix: "load avg: 1.80 "
149
153
if self .getloadavg :
@@ -275,13 +279,13 @@ def list_cases(self):
275
279
support .verbose = False
276
280
support .set_match_tests (self .ns .match_tests )
277
281
278
- for test in self .selected :
279
- abstest = get_abs_module (self .ns , test )
282
+ for test_name in self .selected :
283
+ abstest = get_abs_module (self .ns , test_name )
280
284
try :
281
285
suite = unittest .defaultTestLoader .loadTestsFromName (abstest )
282
286
self ._list_cases (suite )
283
287
except unittest .SkipTest :
284
- self .skipped .append (test )
288
+ self .skipped .append (test_name )
285
289
286
290
if self .skipped :
287
291
print (file = sys .stderr )
@@ -298,19 +302,19 @@ def rerun_failed_tests(self):
298
302
print ()
299
303
print ("Re-running failed tests in verbose mode" )
300
304
self .rerun = self .bad [:]
301
- for test in self .rerun :
302
- print ("Re-running test %r in verbose mode" % test , flush = True )
303
- try :
304
- self .ns .verbose = True
305
- ok = runtest (self .ns , test )
306
- except KeyboardInterrupt :
307
- self .interrupted = True
305
+ for test_name in self .rerun :
306
+ print ("Re-running test %r in verbose mode" % test_name , flush = True )
307
+ self .ns .verbose = True
308
+ ok = runtest (self .ns , test_name )
309
+
310
+ if ok [0 ] in {PASSED , ENV_CHANGED , SKIPPED , RESOURCE_DENIED }:
311
+ self .bad .remove (test_name )
312
+
313
+ if ok .result == INTERRUPTED :
308
314
# print a newline separate from the ^C
309
315
print ()
316
+ self .interrupted = True
310
317
break
311
- else :
312
- if ok [0 ] in {PASSED , ENV_CHANGED , SKIPPED , RESOURCE_DENIED }:
313
- self .bad .remove (test )
314
318
else :
315
319
if self .bad :
316
320
print (count (len (self .bad ), 'test' ), "failed again:" )
@@ -348,8 +352,8 @@ def display_result(self):
348
352
self .test_times .sort (reverse = True )
349
353
print ()
350
354
print ("10 slowest tests:" )
351
- for time , test in self .test_times [:10 ]:
352
- print ("- %s: %s" % (test , format_duration (time )))
355
+ for test_time , test in self .test_times [:10 ]:
356
+ print ("- %s: %s" % (test , format_duration (test_time )))
353
357
354
358
if self .bad :
355
359
print ()
@@ -387,33 +391,31 @@ def run_tests_sequential(self):
387
391
print ("Run tests sequentially" )
388
392
389
393
previous_test = None
390
- for test_index , test in enumerate (self .tests , 1 ):
394
+ for test_index , test_name in enumerate (self .tests , 1 ):
391
395
start_time = time .monotonic ()
392
396
393
- text = test
397
+ text = test_name
394
398
if previous_test :
395
399
text = '%s -- %s' % (text , previous_test )
396
400
self .display_progress (test_index , text )
397
401
398
402
if self .tracer :
399
403
# If we're tracing code coverage, then we don't exit with status
400
404
# if on a false return value from main.
401
- cmd = ('result = runtest(self.ns, test ); '
402
- 'self.accumulate_result(test, result)' )
405
+ cmd = ('result = runtest(self.ns, test_name ); '
406
+ 'self.accumulate_result(result)' )
403
407
ns = dict (locals ())
404
408
self .tracer .runctx (cmd , globals = globals (), locals = ns )
405
409
result = ns ['result' ]
406
410
else :
407
- try :
408
- result = runtest (self .ns , test )
409
- except KeyboardInterrupt :
410
- self .interrupted = True
411
- self .accumulate_result (test , (INTERRUPTED , None , None ))
412
- break
413
- else :
414
- self .accumulate_result (test , result )
415
-
416
- previous_test = format_test_result (test , result [0 ])
411
+ result = runtest (self .ns , test_name )
412
+ self .accumulate_result (result )
413
+
414
+ if result .result == INTERRUPTED :
415
+ self .interrupted = True
416
+ break
417
+
418
+ previous_test = format_test_result (result )
417
419
test_time = time .monotonic () - start_time
418
420
if test_time >= PROGRESS_MIN_TIME :
419
421
previous_test = "%s in %s" % (previous_test , format_duration (test_time ))
@@ -441,8 +443,8 @@ def run_tests_sequential(self):
441
443
442
444
def _test_forever (self , tests ):
443
445
while True :
444
- for test in tests :
445
- yield test
446
+ for test_name in tests :
447
+ yield test_name
446
448
if self .bad :
447
449
return
448
450
if self .ns .fail_env_changed and self .environment_changed :
0 commit comments