X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/475a598139ee32875e057f86b63b2294fac1df53..9f62e12607e183452816941da3e99bb5efda40d0:/tools/tesh/tesh.py diff --git a/tools/tesh/tesh.py b/tools/tesh/tesh.py index 4e332faab2..85300665c9 100755 --- a/tools/tesh/tesh.py +++ b/tools/tesh/tesh.py @@ -5,7 +5,7 @@ tesh -- testing shell ======================== -Copyright (c) 2012-2017. The SimGrid Team. All rights reserved. +Copyright (c) 2012-2019. 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. @@ -110,7 +110,7 @@ pgtokill = None def kill_process_group(pgid): if pgid is None: # Nobody to kill. We don't know who to kill on windows, or we don't have anyone to kill on signal handler return - + # print("Kill process group {}".format(pgid)) try: os.killpg(pgid, signal.SIGTERM) @@ -188,7 +188,7 @@ class TeshState(Singleton): t.acquire() t.release() -#Command line object +# Command line object class Cmd(object): def __init__(self): self.input_pipe = [] @@ -199,7 +199,8 @@ class Cmd(object): self.linenumber = -1 self.background = False - self.cwd = None + # Python threads loose the cwd + self.cwd = os.getcwd() self.ignore_output = False self.expect_return = 0 @@ -259,8 +260,6 @@ class Cmd(object): def run_if_possible(self): if self.can_run(): if self.background: - #Python threads loose the cwd - self.cwd = os.getcwd() lock = _thread.allocate_lock() lock.acquire() TeshState().add_thread(lock) @@ -273,10 +272,8 @@ class Cmd(object): def _run(self, lock=None): - #Python threads loose the cwd - if self.cwd is not None: - os.chdir(self.cwd) - self.cwd = None + # Python threads loose the cwd + os.chdir(self.cwd) #retrocompatibility: support ${aaa:=.} variable format def replace_perl_variables(m): @@ -326,6 +323,14 @@ class Cmd(object): except OSError: # os.getpgid failed. OK. No cleanup. pass + except PermissionError: + print("["+FileReader().filename+":"+str(self.linenumber)+"] Cannot start '"+args[0]+"': The binary is not executable.") + print("["+FileReader().filename+":"+str(self.linenumber)+"] Current dir: "+os.getcwd()) + tesh_exit(3) + except NotADirectoryError: + print("["+FileReader().filename+":"+str(self.linenumber)+"] Cannot start '"+args[0]+"': The path to binary does not exist.") + print("["+FileReader().filename+":"+str(self.linenumber)+"] Current dir: "+os.getcwd()) + tesh_exit(3) except FileNotFoundError: print("["+FileReader().filename+":"+str(self.linenumber)+"] Cannot start '"+args[0]+"': File not found") tesh_exit(3)