summaryrefslogtreecommitdiffstats
path: root/Lib/test/regrtest.py
diff options
context:
space:
mode:
authorCollin Winter <collinw@gmail.com>2009-03-29 04:05:05 (GMT)
committerCollin Winter <collinw@gmail.com>2009-03-29 04:05:05 (GMT)
commitfd12f4972b18503b437ebd2fd7256a2d3a86faa7 (patch)
tree03b24bc827f177213610a9bd76ecf9ee95732f7c /Lib/test/regrtest.py
parent9041daa9a757a7bf0c5924d2cad39cc497b13274 (diff)
downloadcpython-fd12f4972b18503b437ebd2fd7256a2d3a86faa7.zip
cpython-fd12f4972b18503b437ebd2fd7256a2d3a86faa7.tar.gz
cpython-fd12f4972b18503b437ebd2fd7256a2d3a86faa7.tar.bz2
Port r70672 to py3k. Add the ability to control the random seed used by regrtest.py -r.
Diffstat (limited to 'Lib/test/regrtest.py')
-rwxr-xr-xLib/test/regrtest.py23
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