[lit] Fix launching executables relative to the cwd after 'cd'
authorReid Kleckner <reid@kleckner.net>
Wed, 22 Jul 2015 21:35:27 +0000 (21:35 +0000)
committerReid Kleckner <reid@kleckner.net>
Wed, 22 Jul 2015 21:35:27 +0000 (21:35 +0000)
This was affecting test/asan/TestCases/Windows/coverage-basic.cc in
compiler-rt. It does something like:

  cd %T/mydir
  %clang %s -o t.exe
  ./t.exe

Previously, we'd end up looking for t.exe relative to the cwd of the lit
process, not the cwd of the test.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242941 91177308-0d34-0410-b5e6-96231b3b80d8

utils/lit/lit/TestRunner.py

index dac06582e14f6f1754c2355ca6037f4bf956174e..a49028743253dc82a9ce688c8ef5625eb7d29a2b 100644 (file)
@@ -178,7 +178,14 @@ def executeShCmd(cmd, shenv, results):
 
         # Resolve the executable path ourselves.
         args = list(j.args)
-        executable = lit.util.which(args[0], cmd_shenv.env['PATH'])
+        executable = None
+        # For paths relative to cwd, use the cwd of the shell environment.
+        if args[0].startswith('.'):
+            exe_in_cwd = os.path.join(cmd_shenv.cwd, args[0])
+            if os.path.isfile(exe_in_cwd):
+                executable = exe_in_cwd
+        if not executable:
+            executable = lit.util.which(args[0], cmd_shenv.env['PATH'])
         if not executable:
             raise InternalShellError(j, '%r: command not found' % j.args[0])