diff options
author | Vedant Kumar <vsk@apple.com> | 2016-06-09 19:36:48 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2016-06-09 19:36:48 +0000 |
commit | 6437eb9d5f08a8d1e46e4da833697da8724e514d (patch) | |
tree | 104a0f8226d81b3e5002713c9e70f10dbcdb7fc3 /llvm/utils/lit | |
parent | ed0f97fad2eb3a82f9bc66c734db83e98600ccc3 (diff) | |
download | bcm5719-llvm-6437eb9d5f08a8d1e46e4da833697da8724e514d.tar.gz bcm5719-llvm-6437eb9d5f08a8d1e46e4da833697da8724e514d.zip |
Revert "[lit] Use os.devnull instead of named temp files"
This reverts commit r272290. It breaks a test that depends on being able
to seek the /dev/null equivalent on Windows:
http://bb.pgr.jp/builders/ninja-clang-x64-mingw64-RA/builds/11360
llvm-svn: 272293
Diffstat (limited to 'llvm/utils/lit')
-rw-r--r-- | llvm/utils/lit/lit/TestRunner.py | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py index f5515a0bc97..36d429204fd 100644 --- a/llvm/utils/lit/lit/TestRunner.py +++ b/llvm/utils/lit/lit/TestRunner.py @@ -20,6 +20,9 @@ kIsWindows = platform.system() == 'Windows' # Don't use close_fds on Windows. kUseCloseFDs = not kIsWindows +# Use temporary files to replace /dev/null on Windows. +kAvoidDevNull = kIsWindows + class ShellEnvironment(object): """Mutable shell environment containing things like CWD and env vars. @@ -189,6 +192,7 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper): input = subprocess.PIPE stderrTempFiles = [] opened_files = [] + named_temp_files = [] # To avoid deadlock, we use a single stderr stream for piped # output. This is null until we have seen some output using # stderr. @@ -252,8 +256,8 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper): else: if r[2] is None: redir_filename = None - if kIsWindows and r[0] == '/dev/null': - r[2] = open(os.devnull, r[1]) + if kAvoidDevNull and r[0] == '/dev/null': + r[2] = tempfile.TemporaryFile(mode=r[1]) elif kIsWindows and r[0] == '/dev/tty': # Simulate /dev/tty on Windows. # "CON" is a special filename for the console. @@ -302,11 +306,14 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper): if not executable: raise InternalShellError(j, '%r: command not found' % j.args[0]) - if kIsWindows: - # Replace uses of /dev/null with the Windows equivalent. + # Replace uses of /dev/null with temporary files. + if kAvoidDevNull: for i,arg in enumerate(args): if arg == "/dev/null": - args[i] = os.devnull + f = tempfile.NamedTemporaryFile(delete=False) + f.close() + named_temp_files.append(f.name) + args[i] = f.name try: procs.append(subprocess.Popen(args, cwd=cmd_shenv.cwd, @@ -415,6 +422,13 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper): else: exitCode = res + # Remove any named temporary files we created. + for f in named_temp_files: + try: + os.remove(f) + except OSError: + pass + if cmd.negate: exitCode = not exitCode |