From 3b86edb632d25c7c2f8bee7d8d4e173ff06e3d87 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sun, 29 Oct 2023 16:38:58 +0100 Subject: [PATCH] tesh: disable the auto-valgrind option in the test running tesh from tesh --- tools/tesh/catch-signal.tesh | 2 +- tools/tesh/tesh.py | 26 ++++++++++++++++++++------ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/tools/tesh/catch-signal.tesh b/tools/tesh/catch-signal.tesh index 2799b4f0d9..42fede22bc 100644 --- a/tools/tesh/catch-signal.tesh +++ b/tools/tesh/catch-signal.tesh @@ -19,7 +19,7 @@ $ perl segfault.pl p Check that we return the expected return value on SEGV ! expect return 11 < $ perl segfault.pl -$ ${bindir:=.}/tesh +$ ${bindir:=.}/tesh --no-auto-valgrind > Test suite from stdin > [(stdin):1] perl segfault.pl > Test suite `(stdin)': NOK (<(stdin):1> got signal SIGSEGV) diff --git a/tools/tesh/tesh.py b/tools/tesh/tesh.py index 1a6d8f33b1..a0e96d5072 100755 --- a/tools/tesh/tesh.py +++ b/tools/tesh/tesh.py @@ -196,6 +196,7 @@ class TeshState(Singleton): self.args_suffix = "" self.ignore_regexps_common = [] self.jenkins = False # not a Jenkins run by default + self.auto_valgrind = True self.timeout = 10 # default value: 10 sec self.wrapper = None self.keep = False @@ -303,9 +304,11 @@ class Cmd: _thread.start_new_thread(Cmd._run, (self, lock)) else: self._run() - if self.rerun_with_valgrind: - print('\n\n\nXXXXXXXXX Rerunning this test with valgrind to help debugging it XXXXXXXXX') - print('(this will fail if valgrind is not installed, of course)\n\n\n') + if self.rerun_with_valgrind and TeshState().auto_valgrind: + print('\n\n\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') + print( 'XXXXXXXXX Rerunning this test with valgrind to help debugging it XXXXXXXXX') + print( 'XXXXXXXX (this will fail if valgrind is not installed, of course) XXXXXXXX') + print( 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n\n\n') self.args = "valgrind " + self.args self._run() @@ -418,13 +421,17 @@ class Cmd: print('\n'.join(logs)) return - if self.output_display: - logs.append(str(stdout_data)) - # remove text colors ansi_escape = re.compile(r'\x1b[^m]*m') stdout_data = ansi_escape.sub('', stdout_data) + if self.output_display: + logs.append(str(stdout_data)) + + if self.rerun_with_valgrind: + print(str(stdout_data), file=sys.stderr) + return + if self.ignore_output: logs.append("(ignoring the output of <{cmd}> as requested)".format(cmd=cmd_name)) else: @@ -558,6 +565,10 @@ def main(): '--ignore-jenkins', action='store_true', help='ignore all cruft generated on SimGrid continuous integration servers') + group1.add_argument( + '--no-auto-valgrind', + action='store_true', + help='do not automaticall launch segfaulting commands in valgrind') group1.add_argument('--wrapper', metavar='arg', help='Run each command in the provided wrapper (eg valgrind)') group1.add_argument( '--keep', @@ -591,6 +602,9 @@ def main(): ] TeshState().jenkins = True # This is a Jenkins build + if options.no_auto_valgrind: + TeshState().auto_valgrind = False + if options.teshfile is None: file = FileReader(None) print("Test suite from stdin") -- 2.20.1