[PATCH] D31506: lit: support redirect from globs

Rafael Ávila de Espíndola via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 30 12:30:52 PDT 2017


rafael created this revision.
Herald added a reviewer: modocache.

This adds support for commands like

FileCheck < foobar*

which is used by some asan tests because the file they want to read has a pid in the name.


https://reviews.llvm.org/D31506

Files:
  utils/lit/lit/TestRunner.py


Index: utils/lit/lit/TestRunner.py
===================================================================
--- utils/lit/lit/TestRunner.py
+++ utils/lit/lit/TestRunner.py
@@ -142,13 +142,15 @@
 
     return (finalExitCode, timeoutInfo)
 
+def expand_glob(arg):
+    if isinstance(arg, GlobItem):
+        return arg.resolve()
+    return [arg]
+
 def expand_glob_expressions(args):
     result = [args[0]]
     for arg in args[1:]:
-        if isinstance(arg, GlobItem):
-            result.extend(arg.resolve())
-        else:
-            result.append(arg)
+        result.extend(expand_glob(arg))
     return result
 
 def quote_windows_command(seq):
@@ -323,15 +325,19 @@
             else:
                 if r[2] is None:
                     redir_filename = None
-                    if kAvoidDevNull and r[0] == '/dev/null':
+                    name = expand_glob(r[0])
+                    if len(name) != 1:
+                       raise InternalShellError(j,"Unsupported redirect with glob")
+                    name = name[0]
+                    if kAvoidDevNull and name == '/dev/null':
                         r[2] = tempfile.TemporaryFile(mode=r[1])
-                    elif kIsWindows and r[0] == '/dev/tty':
+                    elif kIsWindows and name == '/dev/tty':
                         # Simulate /dev/tty on Windows.
                         # "CON" is a special filename for the console.
                         r[2] = open("CON", r[1])
                     else:
                         # Make sure relative paths are relative to the cwd.
-                        redir_filename = os.path.join(cmd_shenv.cwd, r[0])
+                        redir_filename = os.path.join(cmd_shenv.cwd, name)
                         r[2] = open(redir_filename, r[1])
                     # Workaround a Win32 and/or subprocess bug when appending.
                     #


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D31506.93523.patch
Type: text/x-patch
Size: 1887 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170330/95f545fa/attachment.bin>


More information about the llvm-commits mailing list