Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ce4a475

Browse files
committed
Add -d/--debug option to print traceback without -v/--verbose.
1 parent 3959046 commit ce4a475

1 file changed

Lines changed: 14 additions & 7 deletions

File tree

Lib/test/regrtest.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
1111
-v: verbose -- run tests in verbose mode with output to stdout
1212
-w: verbose2 -- re-run failed tests in verbose mode
13+
-d: debug -- print traceback for failed tests
1314
-q: quiet -- don't print anything except if a test fails
1415
-g: generate -- write the output file for a test instead of comparing it
1516
-x: exclude -- arguments are tests to *exclude*
@@ -179,7 +180,7 @@ def usage(code, msg=''):
179180
def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False,
180181
exclude=False, single=False, randomize=False, fromfile=None,
181182
findleaks=False, use_resources=None, trace=False, coverdir='coverage',
182-
runleaks=False, huntrleaks=False, verbose2=False):
183+
runleaks=False, huntrleaks=False, verbose2=False, debug=False):
183184
"""Execute a test suite.
184185
185186
This also parses command-line options and modifies its behavior
@@ -204,12 +205,13 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False,
204205

205206
test_support.record_original_stdout(sys.stdout)
206207
try:
207-
opts, args = getopt.getopt(sys.argv[1:], 'hvgqxsrf:lu:t:TD:NLR:wM:',
208+
opts, args = getopt.getopt(sys.argv[1:], 'dhvgqxsrf:lu:t:TD:NLR:wM:',
208209
['help', 'verbose', 'quiet', 'generate',
209210
'exclude', 'single', 'random', 'fromfile',
210211
'findleaks', 'use=', 'threshold=', 'trace',
211212
'coverdir=', 'nocoverdir', 'runleaks',
212213
'huntrleaks=', 'verbose2', 'memlimit=',
214+
'debug',
213215
])
214216
except getopt.error as msg:
215217
usage(2, msg)
@@ -224,6 +226,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False,
224226
verbose += 1
225227
elif o in ('-w', '--verbose2'):
226228
verbose2 = True
229+
elif o in ('-d', '--debug'):
230+
debug = True
227231
elif o in ('-q', '--quiet'):
228232
quiet = True;
229233
verbose = 0
@@ -435,7 +439,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False, generate=False,
435439
try:
436440
test_support.verbose = 1
437441
ok = runtest(test, generate, 1, quiet, testdir,
438-
huntrleaks)
442+
huntrleaks, debug)
439443
except KeyboardInterrupt:
440444
# print a newline separate from the ^C
441445
print()
@@ -496,7 +500,8 @@ def findtests(testdir=None, stdtests=STDTESTS, nottests=NOTTESTS):
496500
tests.sort()
497501
return stdtests + tests
498502

499-
def runtest(test, generate, verbose, quiet, testdir=None, huntrleaks=False):
503+
def runtest(test, generate, verbose, quiet, testdir=None,
504+
huntrleaks=False, debug=False):
500505
"""Run a single test.
501506
502507
test -- the name of the test
@@ -507,6 +512,8 @@ def runtest(test, generate, verbose, quiet, testdir=None, huntrleaks=False):
507512
testdir -- test directory
508513
huntrleaks -- run multiple times to test for leaks; requires a debug
509514
build; a triple corresponding to -R's three arguments
515+
debug -- if true, print tracebacks for failed tests regardless of
516+
verbose setting
510517
Return:
511518
-2 test skipped because resource denied
512519
-1 test skipped for some other reason
@@ -516,12 +523,12 @@ def runtest(test, generate, verbose, quiet, testdir=None, huntrleaks=False):
516523

517524
try:
518525
return runtest_inner(test, generate, verbose, quiet, testdir,
519-
huntrleaks)
526+
huntrleaks, debug)
520527
finally:
521528
cleanup_test_droppings(test, verbose)
522529

523530
def runtest_inner(test, generate, verbose, quiet,
524-
testdir=None, huntrleaks=False):
531+
testdir=None, huntrleaks=False, debug=False):
525532
test_support.unload(test)
526533
if not testdir:
527534
testdir = findtestdir()
@@ -576,7 +583,7 @@ def runtest_inner(test, generate, verbose, quiet,
576583
type, value = sys.exc_info()[:2]
577584
print("test", test, "crashed --", str(type) + ":", value)
578585
sys.stdout.flush()
579-
if verbose:
586+
if verbose or debug:
580587
traceback.print_exc(file=sys.stdout)
581588
sys.stdout.flush()
582589
return 0

0 commit comments

Comments
 (0)