X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fframework.py;h=4bc64a1331ba69a77560632b11140043a31db14f;hb=refs%2Fchanges%2F41%2F20541%2F3;hp=79dfe1ae8664896f05e14d8a31f92e1e6621d340;hpb=5dd6a7b29f23b89aaad4fdaba0579ca5b37d7929;p=vpp.git diff --git a/test/framework.py b/test/framework.py index 79dfe1ae866..4bc64a1331b 100644 --- a/test/framework.py +++ b/test/framework.py @@ -84,7 +84,7 @@ class VppDiedError(Exception): try: self.signal_name = VppDiedError.signals_by_value[-rv] - except KeyError: + except (KeyError, TypeError): pass if testcase is None and method_name is None: @@ -681,10 +681,9 @@ class VppTestCase(unittest.TestCase): super(VppTestCase, self).setUp() self.reporter.send_keep_alive(self) if self.vpp_dead: - raise VppDiedError(self.__class__.__name__, self._testMethodName, - "VPP is dead when setting up the test " - "(%s.%s)." % (self.__class__.__name__, - self._testMethodName)) + + raise VppDiedError(rv=None, testcase=self.__class__.__name__, + method_name=self._testMethodName) self.sleep(.1, "during setUp") self.vpp_stdout_deque.append( "--- test setUp() for %s.%s(%s) starts here ---\n" % @@ -1458,15 +1457,24 @@ class VppTestRunner(unittest.TextTestRunner): class Worker(Thread): - def __init__(self, args, logger, env={}): + def __init__(self, args, logger, env=None): self.logger = logger self.args = args + self.process = None self.result = None + env = {} if env is None else env self.env = copy.deepcopy(env) super(Worker, self).__init__() def run(self): executable = self.args[0] + if not os.path.exists(executable) or not os.access( + executable, os.F_OK | os.X_OK): + # Exit code that means some system file did not exist, + # could not be opened, or had some other kind of error. + self.result = os.EX_OSFILE + raise EnvironmentError( + "executable '%s' is not found or executable." % executable) self.logger.debug("Running executable w/args `%s'" % self.args) env = os.environ.copy() env.update(self.env)