X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5b4dbc7eddf916bacacb0eba2708e1b6a6999825..061b3a73449ac71c9191b2515abd0622bf6664b2:/tools/tesh/tesh.py diff --git a/tools/tesh/tesh.py b/tools/tesh/tesh.py index 2e0d94a37d..3abc35ab66 100755 --- a/tools/tesh/tesh.py +++ b/tools/tesh/tesh.py @@ -5,12 +5,11 @@ tesh -- testing shell ======================== -Copyright (c) 2012-2019. The SimGrid Team. All rights reserved. +Copyright (c) 2012-2020. The SimGrid Team. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the license (GNU LGPL) which comes with this package. - #TODO: child of child of child that printfs. Does it work? #TODO: a child dies after its parent. What happen? @@ -25,7 +24,6 @@ under the terms of the license (GNU LGPL) which comes with this package. """ - import sys import os import shlex @@ -47,14 +45,12 @@ else: # # - def isWindows(): return sys.platform.startswith('win') # Singleton metaclass that works in Python 2 & 3 # http://stackoverflow.com/questions/6760685/creating-a-singleton-in-python - class _Singleton(type): """ A metaclass that creates a Singleton base class when called. """ _instances = {} @@ -64,11 +60,9 @@ class _Singleton(type): cls._instances[cls] = super(_Singleton, cls).__call__(*args, **kwargs) return cls._instances[cls] - class Singleton(_Singleton('SingletonMeta', (object,), {})): pass - SIGNALS_TO_NAMES_DICT = dict((getattr(signal, n), n) for n in dir(signal) if n.startswith('SIG') and '_' not in n) @@ -314,8 +308,8 @@ class Cmd(object): vdefault = m.group(2) if vname in os.environ: return "$" + vname - else: - return vdefault + return vdefault + self.args = re.sub(r"\${(\w+):=([^}]*)}", replace_perl_variables, self.args) # replace bash environment variables ($THINGS) to their values @@ -427,7 +421,7 @@ class Cmd(object): logs.append("(ignoring the output of <{cmd}> as requested)".format(cmd=cmdName)) else: stdouta = stdout_data.split("\n") - while len(stdouta) > 0 and stdouta[-1] == "": + while stdouta and stdouta[-1] == "": del stdouta[-1] stdouta = self.remove_ignored_lines(stdouta) stdcpy = stdouta[:] @@ -447,7 +441,7 @@ class Cmd(object): lineterm="", fromfile='expected', tofile='obtained')) - if len(diff) > 0: + if diff: logs.append("Output of <{cmd}> mismatch:".format(cmd=cmdName)) if self.sort >= 0: # If sorted, truncate the diff output and show the unsorted version difflen = 0 @@ -471,7 +465,7 @@ class Cmd(object): if TeshState().keep: f = open('obtained', 'w') obtained = stdout_data.split("\n") - while len(obtained) > 0 and obtained[-1] == "": + while obtained and obtained[-1] == "": del obtained[-1] obtained = self.remove_ignored_lines(obtained) for line in obtained: @@ -514,14 +508,12 @@ class Cmd(object): def can_run(self): return self.args is not None - ############## # # Main # # - if __name__ == '__main__': signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) @@ -609,7 +601,7 @@ if __name__ == '__main__': line = f.readfullline() while line is not None: # print(">>============="+line+"==<<") - if len(line) == 0: + if not line: #print ("END CMD block") if cmd.run_if_possible(): cmd = Cmd()