diff options
Diffstat (limited to 'Lib/test/regrtest.py')
-rwxr-xr-x | Lib/test/regrtest.py | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 66c39d6..dae7442 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -35,6 +35,10 @@ If no test names are given, all tests are run. -v is incompatible with -g and does not compare test output files. +-r randomizes test execution order. You can use --randseed=int to provide a +int seed value for the randomizer; this is useful for reproducing troublesome +test orders. + -T turns on code coverage tracing with the trace module. -D specifies the directory where coverage files are put. @@ -191,7 +195,8 @@ def usage(msg): def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False, exclude=False, single=False, randomize=False, fromfile=None, findleaks=False, use_resources=None, trace=False, coverdir='coverage', - runleaks=False, huntrleaks=False, verbose2=False, print_slow=False): + runleaks=False, huntrleaks=False, verbose2=False, print_slow=False, + random_seed=None): """Execute a test suite. This also parses command-line options and modifies its behavior @@ -209,9 +214,10 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False, files beginning with test_ will be used. The other default arguments (verbose, quiet, generate, exclude, - single, randomize, findleaks, use_resources, trace, coverdir, and - print_slow) allow programmers calling main() directly to set the - values that would normally be set by flags on the command line. + single, randomize, findleaks, use_resources, trace, coverdir, + print_slow, and random_seed) allow programmers calling main() + directly to set the values that would normally be set by flags + on the command line. """ support.record_original_stdout(sys.stdout) @@ -222,12 +228,15 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False, 'findleaks', 'use=', 'threshold=', 'trace', 'coverdir=', 'nocoverdir', 'runleaks', 'huntrleaks=', 'verbose2', 'memlimit=', - 'debug', 'start=', "nowindows" + 'debug', 'start=', 'nowindows', + 'randseed=', ]) except getopt.error as msg: usage(msg) # Defaults + if random_seed is None: + random_seed = random.randrange(10000000) if use_resources is None: use_resources = [] debug = False @@ -255,6 +264,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False, print_slow = True elif o in ('-r', '--randomize'): randomize = True + elif o == '--randseed': + random_seed = int(a) elif o in ('-f', '--fromfile'): fromfile = a elif o in ('-l', '--findleaks'): @@ -389,6 +400,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False, except ValueError: print("Couldn't find starting test (%s), using all tests" % start) if randomize: + random.seed(random_seed) + print("Using random seed", random_seed) random.shuffle(tests) if trace: import trace |