Kaydet (Commit) 0179a180 authored tarafından Skip Montanaro's avatar Skip Montanaro

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

üst 4d5bc603
...@@ -20,6 +20,7 @@ Command line options: ...@@ -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 ...@@ -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=''): ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment