From 6bd2b2e9a27df118951d2fdc88df249d56a4d8fe Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Tue, 22 Sep 2009 04:44:26 +0000 Subject: [PATCH] lit: When executing commands internally, perform PATH resolution ourselves. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82520 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/lit/TestRunner.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/utils/lit/TestRunner.py b/utils/lit/TestRunner.py index 6ed3ce609ed..5fadfd5f175 100644 --- a/utils/lit/TestRunner.py +++ b/utils/lit/TestRunner.py @@ -5,6 +5,11 @@ import ShUtil import Test import Util +class InternalShellError(Exception): + def __init__(self, command, message): + self.command = command + self.message = message + def executeCommand(command, cwd=None, env=None): p = subprocess.Popen(command, cwd=cwd, stdin=subprocess.PIPE, @@ -94,6 +99,13 @@ def executeShCmd(cmd, cfg, cwd, results): stderrIsStdout = True else: stderrIsStdout = False + + # Resolve the executable path ourselves. + args = list(j.args) + args[0] = Util.which(args[0], cfg.environment['PATH']) + if not args[0]: + raise InternalShellError(j, '%r: command not found' % j.args[0]) + procs.append(subprocess.Popen(j.args, cwd=cwd, stdin = stdin, stdout = stdout, @@ -159,7 +171,12 @@ def executeScriptInternal(test, litConfig, tmpBase, commands, cwd): return (Test.FAIL, "shell parser error on: %r" % ln) results = [] - exitCode = executeShCmd(cmd, test.config, cwd, results) + try: + exitCode = executeShCmd(cmd, test.config, cwd, results) + except InternalShellError,e: + out = '' + err = e.message + exitCode = 255 out = err = '' for i,(cmd, cmd_out,cmd_err,res) in enumerate(results): @@ -225,7 +242,11 @@ def executeTclScriptInternal(test, litConfig, tmpBase, commands, cwd): return out,err,exitCode else: results = [] - exitCode = executeShCmd(cmd, test.config, cwd, results) + try: + exitCode = executeShCmd(cmd, test.config, cwd, results) + except InternalShellError,e: + results.append((e.command, '', e.message + '\n', 255)) + exitCode = 255 out = err = ''