add -L flag to cause leaks(1) command to run just before exit

This commit is contained in:
Skip Montanaro 2004-06-06 15:53:18 +00:00
parent 4d5bc6031c
commit 0179a18034
1 changed files with 13 additions and 2 deletions

View File

@ -20,6 +20,7 @@ Command line options:
-h: help -- print this text and exit -h: help -- print this text and exit
-t: threshold -- call gc.set_threshold(N) -t: threshold -- call gc.set_threshold(N)
-T: coverage -- turn on code coverage using the trace module -T: coverage -- turn on code coverage using the trace module
-L: runleaks -- run the leaks(1) command just before exit
If non-option arguments are present, they are names for tests to run, 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. unless -x is given, in which case they are names for tests not to run.
@ -42,6 +43,10 @@ or more test names per line. Whitespace is ignored. Blank lines and
lines beginning with '#' are ignored. This is especially useful for lines beginning with '#' are ignored. This is especially useful for
whittling down failures involving interactions among tests. whittling down failures involving interactions among tests.
-L causes the leaks(1) command to be run just before exit if it exists.
leaks(1) is available on Mac OS X and presumably on some other
FreeBSD-derived systems.
-u is used to specify which special resource intensive tests to run, -u is used to specify which special resource intensive tests to run,
such as those requiring large file support or network connectivity. such as those requiring large file support or network connectivity.
The argument is a comma-separated list of words indicating the The argument is a comma-separated list of words indicating the
@ -118,7 +123,7 @@ def usage(code, msg=''):
def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False, def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False,
exclude=False, single=False, randomize=False, fromfile=None, exclude=False, single=False, randomize=False, fromfile=None,
findleaks=False, use_resources=None, trace=False): findleaks=False, use_resources=None, trace=False, runleaks=False):
"""Execute a test suite. """Execute a test suite.
This also parses command-line options and modifies its behavior This also parses command-line options and modifies its behavior
@ -143,10 +148,11 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False,
test_support.record_original_stdout(sys.stdout) test_support.record_original_stdout(sys.stdout)
try: try:
opts, args = getopt.getopt(sys.argv[1:], 'hvgqxsrf:lu:t:T', opts, args = getopt.getopt(sys.argv[1:], 'hvgqxsrf:lu:t:TL',
['help', 'verbose', 'quiet', 'generate', ['help', 'verbose', 'quiet', 'generate',
'exclude', 'single', 'random', 'fromfile', 'exclude', 'single', 'random', 'fromfile',
'findleaks', 'use=', 'threshold=', 'trace', 'findleaks', 'use=', 'threshold=', 'trace',
'runleaks'
]) ])
except getopt.error, msg: except getopt.error, msg:
usage(2, msg) usage(2, msg)
@ -174,6 +180,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False,
fromfile = a fromfile = a
elif o in ('-l', '--findleaks'): elif o in ('-l', '--findleaks'):
findleaks = True findleaks = True
elif o in ('-L', '--runleaks'):
runleaks = True
elif o in ('-t', '--threshold'): elif o in ('-t', '--threshold'):
import gc import gc
gc.set_threshold(int(a)) gc.set_threshold(int(a))
@ -350,6 +358,9 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False,
r = tracer.results() r = tracer.results()
r.write_results(show_missing=True, summary=True, coverdir=coverdir) r.write_results(show_missing=True, summary=True, coverdir=coverdir)
if runleaks:
os.system("leaks %d" % os.getpid())
sys.exit(len(bad) > 0) sys.exit(len(bad) > 0)