From 4e16bc09ec756de4ed61b1d82e4a23ed14c2963e Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Thu, 30 Mar 2017 20:48:58 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299111 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/lit/lit/TestRunner.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py index 9cb0ae09923..894159ee7bf 100644 --- a/utils/lit/lit/TestRunner.py +++ b/utils/lit/lit/TestRunner.py @@ -142,13 +142,15 @@ def executeShCmd(cmd, shenv, results, timeout=0): 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, timeoutHelper): 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. # -- 2.40.0