X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c8bb26b864b6f4da679743d0b979543268e875ba..a8b0d3cae89ee8363b646fbb88817331dc57cbf9:/tools/tesh/tesh.py diff --git a/tools/tesh/tesh.py b/tools/tesh/tesh.py index 95ff89846d..25aad527a7 100755 --- a/tools/tesh/tesh.py +++ b/tools/tesh/tesh.py @@ -65,7 +65,7 @@ SIGNALS_TO_NAMES_DICT = dict((getattr(signal, n), n) \ #exit correctly -def exit(errcode): +def tesh_exit(errcode): #If you do not flush some prints are skipped sys.stdout.flush() #os._exit exit even when executed within a thread @@ -74,7 +74,7 @@ def exit(errcode): def fatal_error(msg): print("[Tesh/CRITICAL] "+str(msg)) - exit(1) + tesh_exit(1) #Set an environment variable. @@ -224,7 +224,7 @@ class Cmd(object): except FileNotFoundError: print("Chdir to "+args[1]+" failed: No such file or directory") print("Test suite `"+FileReader().filename+"': NOK (system error)") - exit(4) + tesh_exit(4) #Run the Cmd if possible. @@ -293,7 +293,7 @@ class Cmd(object): proc = subprocess.Popen(args, bufsize=1, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True) except FileNotFoundError: print("["+FileReader().filename+":"+str(self.linenumber)+"] Cannot start '"+args[0]+"': File not found") - exit(3) + tesh_exit(3) except OSError as osE: if osE.errno == 8: osE.strerror += "\nOSError: [Errno 8] Executed scripts should start with shebang line (like #!/bin/sh)" @@ -305,7 +305,7 @@ class Cmd(object): except subprocess.TimeoutExpired: print("Test suite `"+FileReader().filename+"': NOK (<"+cmdName+"> timeout after "+str(self.timeout)+" sec)") proc.kill() - exit(3) + tesh_exit(3) if self.output_display: print(stdout_data) @@ -363,7 +363,7 @@ class Cmd(object): f.write("> "+line+"\n") f.close() print("Obtained output kept as requested: "+os.path.abspath("obtained")) - exit(2) + tesh_exit(2) #print ((proc.returncode, self.expect_return)) @@ -371,11 +371,11 @@ class Cmd(object): if proc.returncode >= 0: print("Test suite `"+FileReader().filename+"': NOK (<"+cmdName+"> returned code "+str(proc.returncode)+")") if lock is not None: lock.release() - exit(2) + tesh_exit(2) else: print("Test suite `"+FileReader().filename+"': NOK (<"+cmdName+"> got signal "+SIGNALS_TO_NAMES_DICT[-proc.returncode]+")") if lock is not None: lock.release() - exit(-proc.returncode) + tesh_exit(-proc.returncode) if lock is not None: lock.release() @@ -402,34 +402,36 @@ if __name__ == '__main__': group1.add_argument('teshfile', nargs='?', help='Name of teshfile, stdin if omitted') group1.add_argument('--cd', metavar='some/directory', help='ask tesh to switch the working directory before launching the tests') group1.add_argument('--setenv', metavar='var=value', action='append', help='set a specific environment variable') - group1.add_argument('--cfg', metavar='arg', help='add parameter --cfg=arg to each command line') - group1.add_argument('--log', metavar='arg', help='add parameter --log=arg to each command line') + group1.add_argument('--cfg', metavar='arg', action='append', help='add parameter --cfg=arg to each command line') + group1.add_argument('--log', metavar='arg', action='append', help='add parameter --log=arg to each command line') group1.add_argument('--ignore-jenkins', action='store_true', help='ignore all cruft generated on SimGrid continous integration servers') group1.add_argument('--wrapper', metavar='arg', help='Run each command in the provided wrapper (eg valgrind)') group1.add_argument('--keep', action='store_true', help='Keep the obtained output when it does not match the expected one') try: options = parser.parse_args() - except: - exit(1) + except SystemExit: + tesh_exit(1) if options.cd is not None: os.chdir(options.cd) if options.ignore_jenkins: print("Ignore all cruft seen on SimGrid's continous integration servers") + # Note: regexps should match at the beginning of lines TeshState().ignore_regexps_common = [ - re.compile("^profiling:"), - re.compile(".*WARNING: ASan doesn\'t fully support"), - re.compile("Unable to clean temporary file C:.*"), + re.compile("profiling:"), + re.compile("Unable to clean temporary file C:"), re.compile(".*Configuration change: Set \'contexts/"), - re.compile(".*Picked up JAVA_TOOL_OPTIONS.*"), - - re.compile("==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top:"), + re.compile("Picked up JAVA_TOOL_OPTIONS: "), + re.compile("Picked up _JAVA_OPTIONS: "), + re.compile("==[0-9]+== ?WARNING: ASan doesn\'t fully support"), + re.compile("==[0-9]+== ?WARNING: ASan is ignoring requested __asan_handle_no_return: stack top:"), re.compile("False positive error reports may follow"), - re.compile("For details see http://code.google.com/p/address-sanitizer/issues/detail?id=189"), - + re.compile("For details see http://code.google.com/p/address-sanitizer/issues/detail\\?id=189"), + re.compile("For details see https://github.com/google/sanitizers/issues/189"), re.compile("Python runtime initialized with LC_CTYPE=C .*"), + re.compile("cmake: /usr/local/lib/libcurl.so.4: no version information available (required by cmake)"), # Seen on CircleCI ] TeshState().jenkins = True # This is a Jenkins build @@ -439,7 +441,7 @@ if __name__ == '__main__': else: if not os.path.isfile(options.teshfile): print("Cannot open teshfile '"+options.teshfile+"': File not found") - exit(3) + tesh_exit(3) f = FileReader(options.teshfile) print("Test suite '"+f.abspath+"'") @@ -448,9 +450,11 @@ if __name__ == '__main__': setenv(e) if options.cfg is not None: - TeshState().args_suffix += " --cfg="+options.cfg + for c in options.cfg: + TeshState().args_suffix += " --cfg=" + c if options.log is not None: - TeshState().args_suffix += " --log="+options.log + for l in options.log: + TeshState().args_suffix += " --log=" + l if options.wrapper is not None: TeshState().wrapper = options.wrapper