37
37
-f/--fromfile -- read names of tests to run from a file (see below)
38
38
-x/--exclude -- arguments are tests to *exclude*
39
39
-s/--single -- single step through a set of tests (see below)
40
+ -m/--match PAT -- match test cases and methods with glob pattern PAT
41
+ -G/--failfast -- fail as soon as a test fails (only with -v or -W)
40
42
-u/--use RES1,RES2,...
41
43
-- specify which special resource intensive tests to run
42
44
-M/--memlimit LIMIT
@@ -242,7 +244,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
242
244
findleaks = False , use_resources = None , trace = False , coverdir = 'coverage' ,
243
245
runleaks = False , huntrleaks = False , verbose2 = False , print_slow = False ,
244
246
random_seed = None , use_mp = None , verbose3 = False , forever = False ,
245
- header = False , pgo = False ):
247
+ header = False , pgo = False , failfast = False , match_tests = None ):
246
248
"""Execute a test suite.
247
249
248
250
This also parses command-line options and modifies its behavior
@@ -268,12 +270,13 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
268
270
269
271
test_support .record_original_stdout (sys .stdout )
270
272
try :
271
- opts , args = getopt .getopt (sys .argv [1 :], 'hvqxsSrf:lu:t:TD:NLR:FwWM:j:P ' ,
273
+ opts , args = getopt .getopt (sys .argv [1 :], 'hvqxsSrf:lu:t:TD:NLR:FwWM:j:PGm: ' ,
272
274
['help' , 'verbose' , 'verbose2' , 'verbose3' , 'quiet' ,
273
275
'exclude' , 'single' , 'slow' , 'randomize' , 'fromfile=' , 'findleaks' ,
274
276
'use=' , 'threshold=' , 'trace' , 'coverdir=' , 'nocoverdir' ,
275
277
'runleaks' , 'huntrleaks=' , 'memlimit=' , 'randseed=' ,
276
- 'multiprocess=' , 'slaveargs=' , 'forever' , 'header' , 'pgo' ])
278
+ 'multiprocess=' , 'slaveargs=' , 'forever' , 'header' , 'pgo' ,
279
+ 'failfast' , 'match=' ])
277
280
except getopt .error , msg :
278
281
usage (2 , msg )
279
282
@@ -291,6 +294,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
291
294
verbose2 = True
292
295
elif o in ('-W' , '--verbose3' ):
293
296
verbose3 = True
297
+ elif o in ('-G' , '--failfast' ):
298
+ failfast = True
294
299
elif o in ('-q' , '--quiet' ):
295
300
quiet = True ;
296
301
verbose = 0
@@ -306,6 +311,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
306
311
random_seed = int (a )
307
312
elif o in ('-f' , '--fromfile' ):
308
313
fromfile = a
314
+ elif o in ('-m' , '--match' ):
315
+ match_tests = a
309
316
elif o in ('-l' , '--findleaks' ):
310
317
findleaks = True
311
318
elif o in ('-L' , '--runleaks' ):
@@ -380,6 +387,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
380
387
usage (2 , "-T and -j don't go together!" )
381
388
if use_mp and findleaks :
382
389
usage (2 , "-l and -j don't go together!" )
390
+ if failfast and not (verbose or verbose3 ):
391
+ usage ("-G/--failfast needs either -v or -W" )
383
392
384
393
good = []
385
394
bad = []
@@ -514,6 +523,8 @@ def tests_and_args():
514
523
args_tuple = (
515
524
(test , verbose , quiet ),
516
525
dict (huntrleaks = huntrleaks , use_resources = use_resources ,
526
+ failfast = failfast ,
527
+ match_tests = match_tests ,
517
528
pgo = pgo )
518
529
)
519
530
yield (test , args_tuple )
@@ -609,7 +620,9 @@ def work():
609
620
globals = globals (), locals = vars ())
610
621
else :
611
622
try :
612
- result = runtest (test , verbose , quiet , huntrleaks , None , pgo )
623
+ result = runtest (test , verbose , quiet , huntrleaks , None , pgo ,
624
+ failfast = failfast ,
625
+ match_tests = match_tests )
613
626
accumulate_result (test , result )
614
627
if verbose3 and result [0 ] == FAILED :
615
628
if not pgo :
@@ -743,7 +756,8 @@ def findtests(testdir=None, stdtests=STDTESTS, nottests=NOTTESTS):
743
756
return stdtests + sorted (tests )
744
757
745
758
def runtest (test , verbose , quiet ,
746
- huntrleaks = False , use_resources = None , pgo = False ):
759
+ huntrleaks = False , use_resources = None , pgo = False ,
760
+ failfast = False , match_tests = None ):
747
761
"""Run a single test.
748
762
749
763
test -- the name of the test
@@ -769,6 +783,9 @@ def runtest(test, verbose, quiet,
769
783
if use_resources is not None :
770
784
test_support .use_resources = use_resources
771
785
try :
786
+ test_support .match_tests = match_tests
787
+ if failfast :
788
+ test_support .failfast = True
772
789
return runtest_inner (test , verbose , quiet , huntrleaks , pgo )
773
790
finally :
774
791
cleanup_test_droppings (test , verbose )
0 commit comments