summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2001-08-20 22:33:46 (GMT)
committerBarry Warsaw <barry@python.org>2001-08-20 22:33:46 (GMT)
commit08fca5212528e073600c27c70a34eeef445f393b (patch)
tree2dd3c2c7e8474b779d13e054ada85d8cd5ae601c
parentc0fb605ce3734e7d13301f9a232b12eaa09618ad (diff)
downloadcpython-08fca5212528e073600c27c70a34eeef445f393b.zip
cpython-08fca5212528e073600c27c70a34eeef445f393b.tar.gz
cpython-08fca5212528e073600c27c70a34eeef445f393b.tar.bz2
Removed --have-resources flag in favor of the more granular -u/--use
flag, which specifies external or resource intensive tests to perform. This is used by test_largefile and test_socket_ssl. -u/--use takes a comma separated list of flags, currently supported: largefile, network. usage(): New function. Note that the semantics of main() have changed slightly; instead of returning an error code, it raises a SystemExit (via sys.exit()) with the given error code. main(): use_large_resources => use_resources Also, added support for long-option alternative to the short options. _expectations: Added test_socket_ssl to the list of expectedly skipped tests.
-rwxr-xr-xLib/test/regrtest.py83
1 files changed, 61 insertions, 22 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 6a4b7fd..1140f49 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -15,7 +15,8 @@ Command line options:
-s: single -- run only a single test (see below)
-r: random -- randomize test execution order
-l: findleaks -- if GC is available detect tests that leak memory
---have-resources -- run tests that require large resources (time/space)
+-u: use -- specify which special resource intensive tests to run
+-h: help -- print this text and exit
If non-option arguments are present, they are names for tests to run,
unless -x is given, in which case they are names for tests not to run.
@@ -30,6 +31,17 @@ find the next test to run. If this file is missing, the first test_*.py file
in testdir or on the command line is used. (actually tempfile.gettempdir() is
used instead of /tmp).
+-u is used to specify which special resource intensive tests to run, such as
+those requiring large file support or network connectivity. The argument is a
+comma-separated list of words indicating the resources to test. Currently
+only the following are defined:
+
+ largefile - It is okay to run some test that may create huge files. These
+ tests can take a long time and may consume >2GB of disk space
+ temporarily.
+
+ network - It is okay to run tests that use external network resource,
+ e.g. testing SSL support for sockets.
"""
import sys
@@ -41,9 +53,15 @@ import StringIO
import test_support
+def usage(code, msg=''):
+ print __doc__
+ if msg: print msg
+ sys.exit(code)
+
+
def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0,
exclude=0, single=0, randomize=0, findleaks=0,
- use_large_resources=0):
+ use_resources=None):
"""Execute a test suite.
This also parses command-line options and modifies its behavior
@@ -60,31 +78,50 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0,
command-line will be used. If that's empty, too, then all *.py
files beginning with test_ will be used.
- The other seven default arguments (verbose, quiet, generate, exclude,
- single, randomize, and findleaks) allow programmers calling main()
+ The other default arguments (verbose, quiet, generate, exclude, single,
+ randomize, findleaks, and use_resources) allow programmers calling main()
directly to set the values that would normally be set by flags on the
command line.
"""
try:
- opts, args = getopt.getopt(sys.argv[1:], 'vgqxsrl', ['have-resources'])
+ opts, args = getopt.getopt(sys.argv[1:], 'hvgqxsrlu:',
+ ['help', 'verbose', 'quiet', 'generate',
+ 'exclude', 'single', 'random',
+ 'findleaks', 'use='])
except getopt.error, msg:
- print msg
- print __doc__
- return 2
+ usage(2, msg)
+
+ # Defaults
+ if use_resources is None:
+ use_resources = []
for o, a in opts:
- if o == '-v': verbose = verbose+1
- if o == '-q': quiet = 1; verbose = 0
- if o == '-g': generate = 1
- if o == '-x': exclude = 1
- if o == '-s': single = 1
- if o == '-r': randomize = 1
- if o == '-l': findleaks = 1
- if o == '--have-resources': use_large_resources = 1
+ if o in ('-h', '--help'):
+ usage(0)
+ elif o in ('-v', '--verbose'):
+ verbose += 1
+ elif o in ('-q', '--quiet'):
+ quiet = 1;
+ verbose = 0
+ elif o in ('-g', '--generate'):
+ generate = 1
+ elif o in ('-x', '--exclude'):
+ exclude = 1
+ elif o in ('-s', '--single'):
+ single = 1
+ elif o in ('-r', '--randomize'):
+ randomize = 1
+ elif o in ('-l', '--findleaks'):
+ findleaks = 1
+ elif o in ('-u', '--use'):
+ use_resources = [x.lower() for x in a.split(',')]
+ for r in use_resources:
+ if r not in ('largefile', 'network'):
+ usage(1, 'Invalid -u/--use option: %s' % a)
if generate and verbose:
- print "-g and -v don't go together!"
- return 2
+ usage(2, "-g and -v don't go together!")
+
good = []
bad = []
skipped = []
@@ -130,7 +167,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0,
if randomize:
random.shuffle(tests)
test_support.verbose = verbose # Tell tests to be moderately quiet
- test_support.use_large_resources = use_large_resources
+ test_support.use_resources = use_resources
save_modules = sys.modules.keys()
for test in tests:
if not quiet:
@@ -197,7 +234,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=0, generate=0,
else:
os.unlink(filename)
- return len(bad) > 0
+ sys.exit(len(bad) > 0)
+
STDTESTS = [
'test_grammar',
@@ -347,7 +385,6 @@ def printlist(x, width=70, indent=4):
print line
class Compare:
-
def __init__(self, filename):
if os.path.exists(filename):
self.fp = open(filename, 'r')
@@ -452,6 +489,7 @@ _expectations = {
test_pty
test_pwd
test_signal
+ test_socket_ssl
test_socketserver
test_sunaudiodev
test_timing
@@ -467,6 +505,7 @@ _expectations = {
test_largefile
test_nis
test_ntpath
+ test_socket_ssl
test_socketserver
test_sunaudiodev
test_unicode_file
@@ -497,4 +536,4 @@ class _ExpectedSkips:
return self.expected
if __name__ == '__main__':
- sys.exit(main())
+ main()