[llvm] r299111 - lit: support redirect from globs

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 30 13:48:58 PDT 2017


Author: rafael
Date: Thu Mar 30 15:48:58 2017
New Revision: 299111

URL: http://llvm.org/viewvc/llvm-project?rev=299111&view=rev
Log:
lit: support redirect from globs

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.

Modified:
    llvm/trunk/utils/lit/lit/TestRunner.py

Modified: llvm/trunk/utils/lit/lit/TestRunner.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/TestRunner.py?rev=299111&r1=299110&r2=299111&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/TestRunner.py (original)
+++ llvm/trunk/utils/lit/lit/TestRunner.py Thu Mar 30 15:48:58 2017
@@ -142,13 +142,15 @@ def executeShCmd(cmd, shenv, results, ti
 
     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 @@ def _executeShCmd(cmd, shenv, results, t
             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: glob in redirect expanded to multiple files")
+                    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.
                     #




More information about the llvm-commits mailing list