[Python-checkins] r70673 - python/branches/py3k/Lib/test/regrtest.py

collin.winter python-checkins at python.org
Sun Mar 29 06:05:05 CEST 2009


Author: collin.winter
Date: Sun Mar 29 06:05:05 2009
New Revision: 70673

Log:
Port r70672 to py3k. Add the ability to control the random seed used by regrtest.py -r.

Modified:
   python/branches/py3k/Lib/test/regrtest.py

Modified: python/branches/py3k/Lib/test/regrtest.py
==============================================================================
--- python/branches/py3k/Lib/test/regrtest.py	(original)
+++ python/branches/py3k/Lib/test/regrtest.py	Sun Mar 29 06:05:05 2009
@@ -35,6 +35,10 @@
 
 -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 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 @@
     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 @@
                                     '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 @@
             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 @@
         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


More information about the Python-checkins mailing list