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. #