From 68b61c6d6402c0ad57509705137c92ae814ace27 Mon Sep 17 00:00:00 2001 From: Greg Hudson Date: Wed, 18 Apr 2018 19:21:40 -0400 Subject: [PATCH] Add k5test mark() function Make it easier to locate a failing command in long Python test scripts by allowing the script to output marks, and displaying the most recent mark with command failures. (cherry picked from commit 4e813204ac3dace93297f47d64dfc0aaecc370f8) --- src/util/k5test.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/util/k5test.py b/src/util/k5test.py index 4d30baf40..bc32877a7 100644 --- a/src/util/k5test.py +++ b/src/util/k5test.py @@ -141,6 +141,11 @@ Scripts may use the following functions and variables: added newline) in testlog, and write it to stdout if running verbosely. +* mark(message): Place a divider message in the test output, to make + it easier to determine what part of the test script a command + invocation belongs to. The last mark message will also be displayed + if a command invocation fails. Do not include a newline in message. + * which(progname): Return the location of progname in the executable path, or None if it is not found. @@ -376,6 +381,8 @@ def fail(msg): """Print a message and exit with failure.""" global _current_pass print "*** Failure:", msg + if _last_mark: + print "*** Last mark: %s" % _last_mark if _last_cmd: print "*** Last command (#%d): %s" % (_cmd_index - 1, _last_cmd) if _last_cmd_output: @@ -392,6 +399,12 @@ def success(msg): _success = True +def mark(msg): + global _last_mark + output('\n====== %s ======\n' % msg) + _last_mark = msg + + def skipped(whatmsg, whymsg): output('*** Skipping: %s: %s\n' % (whatmsg, whymsg), force_verbose=True) f = open(os.path.join(buildtop, 'skiptests'), 'a') @@ -1275,6 +1288,7 @@ atexit.register(_onexit) signal.signal(signal.SIGINT, _onsigint) _outfile = open('testlog', 'w') _cmd_index = 1 +_last_mark = None _last_cmd = None _last_cmd_output = None buildtop = _find_buildtop()