diff options
-rw-r--r-- | llvm/docs/CommandGuide/lit.rst | 7 | ||||
-rw-r--r-- | llvm/utils/lit/lit/LitConfig.py | 4 | ||||
-rw-r--r-- | llvm/utils/lit/lit/TestRunner.py | 2 | ||||
-rwxr-xr-x | llvm/utils/lit/lit/main.py | 12 |
4 files changed, 23 insertions, 2 deletions
diff --git a/llvm/docs/CommandGuide/lit.rst b/llvm/docs/CommandGuide/lit.rst index b4d15ef57b7..fbe1a9ab184 100644 --- a/llvm/docs/CommandGuide/lit.rst +++ b/llvm/docs/CommandGuide/lit.rst @@ -80,6 +80,13 @@ OUTPUT OPTIONS Show more information on test failures, for example the entire test output instead of just the test result. +.. option:: -vv, --echo-all-commands + + Echo all commands to stdout, as they are being executed. + This can be valuable for debugging test failures, as the last echoed command + will be the one which has failed. + This option implies ``--verbose``. + .. option:: -a, --show-all Show more information about all tests, for example the entire test diff --git a/llvm/utils/lit/lit/LitConfig.py b/llvm/utils/lit/lit/LitConfig.py index 2b680846e17..2ef0a8f77ec 100644 --- a/llvm/utils/lit/lit/LitConfig.py +++ b/llvm/utils/lit/lit/LitConfig.py @@ -25,7 +25,8 @@ class LitConfig(object): params, config_prefix = None, maxIndividualTestTime = 0, maxFailures = None, - parallelism_groups = []): + parallelism_groups = [], + echo_all_commands = False): # The name of the test runner. self.progname = progname # The items to add to the PATH environment variable. @@ -64,6 +65,7 @@ class LitConfig(object): self.maxIndividualTestTime = maxIndividualTestTime self.maxFailures = maxFailures self.parallelism_groups = parallelism_groups + self.echo_all_commands = echo_all_commands @property def maxIndividualTestTime(self): diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py index 8260d381334..46bcac4b306 100644 --- a/llvm/utils/lit/lit/TestRunner.py +++ b/llvm/utils/lit/lit/TestRunner.py @@ -715,6 +715,8 @@ def executeScript(test, litConfig, tmpBase, commands, cwd): else: if test.config.pipefail: f.write('set -o pipefail;') + if litConfig.echo_all_commands: + f.write('set -x;') f.write('{ ' + '; } &&\n{ '.join(commands) + '; }') f.write('\n') f.close() diff --git a/llvm/utils/lit/lit/main.py b/llvm/utils/lit/lit/main.py index 530f962d336..f0162464ce3 100755 --- a/llvm/utils/lit/lit/main.py +++ b/llvm/utils/lit/lit/main.py @@ -199,6 +199,12 @@ def main_with_tmp(builtinParameters): format_group.add_argument("-v", "--verbose", dest="showOutput", help="Show test output for failures", action="store_true", default=False) + format_group.add_argument("-vv", "--echo-all-commands", + dest="echoAllCommands", + action="store_true", default=False, + help="Echo all commands as they are executed to stdout.\ + In case of failure, last command shown will be the\ + failing one.") format_group.add_argument("-a", "--show-all", dest="showAllOutput", help="Display all commandlines and output", action="store_true", default=False) @@ -303,6 +309,9 @@ def main_with_tmp(builtinParameters): if opts.maxFailures == 0: parser.error("Setting --max-failures to 0 does not have any effect.") + if opts.echoAllCommands: + opts.showOutput = True + inputs = args # Create the user defined parameters. @@ -338,7 +347,8 @@ def main_with_tmp(builtinParameters): config_prefix = opts.configPrefix, maxIndividualTestTime = maxIndividualTestTime, maxFailures = opts.maxFailures, - parallelism_groups = {}) + parallelism_groups = {}, + echo_all_commands = opts.echoAllCommands) # Perform test discovery. run = lit.run.Run(litConfig, |