]> granicus.if.org Git - llvm/commitdiff
Use the current working directory in the glob expansion
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 31 Mar 2017 12:46:39 +0000 (12:46 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 31 Mar 2017 12:46:39 +0000 (12:46 +0000)
This fixes tests that do things like

mkdir <dir>
cd <dir>
..
<cmd> *.foo

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

utils/lit/lit/ShCommands.py
utils/lit/lit/TestRunner.py

index 0c4c20519dcdc31529e9e0a06a1647ae19d91ca5..01e91c55da9896621fba9e1d655a471e6c5a9c65 100644 (file)
@@ -48,9 +48,14 @@ class GlobItem:
 
         return (self.pattern == other.pattern)
 
-    def resolve(self):
+    def resolve(self, cwd):
         import glob
-        results = glob.glob(self.pattern)
+        import os
+        if os.path.isabs(self.pattern):
+           abspath = self.pattern
+        else:
+            abspath = os.path.join(cwd, self.pattern)
+        results = glob.glob(abspath)
         return [self.pattern] if len(results) == 0 else results
 
 class Pipeline:
index 2e6c37c0f311114558fe0edc02d642814874284d..d3f1c2a4a5be6d5ebaf02714e405d2debc1c2181 100644 (file)
@@ -142,15 +142,15 @@ def executeShCmd(cmd, shenv, results, timeout=0):
 
     return (finalExitCode, timeoutInfo)
 
-def expand_glob(arg):
+def expand_glob(arg, cwd):
     if isinstance(arg, GlobItem):
-        return arg.resolve()
+        return arg.resolve(cwd)
     return [arg]
 
-def expand_glob_expressions(args):
+def expand_glob_expressions(args, cwd):
     result = [args[0]]
     for arg in args[1:]:
-        result.extend(expand_glob(arg))
+        result.extend(expand_glob(arg, cwd))
     return result
 
 def quote_windows_command(seq):
@@ -325,7 +325,7 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
             else:
                 if r[2] is None:
                     redir_filename = None
-                    name = expand_glob(r[0])
+                    name = expand_glob(r[0], cmd_shenv.cwd)
                     if len(name) != 1:
                        raise InternalShellError(j,"Unsupported: glob in redirect expanded to multiple files")
                     name = name[0]
@@ -389,7 +389,7 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
                     args[i] = f.name
 
         # Expand all glob expressions
-        args = expand_glob_expressions(args)
+        args = expand_glob_expressions(args, cmd_shenv.cwd)
 
         # On Windows, do our own command line quoting for better compatibility
         # with some core utility distributions.