lit: Make sure to close any files we open as part of redirection.
authorDaniel Dunbar <daniel@zuster.org>
Wed, 31 Mar 2010 18:48:43 +0000 (18:48 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 31 Mar 2010 18:48:43 +0000 (18:48 +0000)
PR6753.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100032 91177308-0d34-0410-b5e6-96231b3b80d8

utils/lit/lit/TestRunner.py

index 29adff2229839f4b1656cfa0cd1eb0e0917e372d..5d008de76d45701cd65e8f29c050e14b33de36e3 100644 (file)
@@ -63,6 +63,7 @@ def executeShCmd(cmd, cfg, cwd, results):
     procs = []
     input = subprocess.PIPE
     stderrTempFiles = []
+    opened_files = []
     # To avoid deadlock, we use a single stderr stream for piped
     # output. This is null until we have seen some output using
     # stderr.
@@ -115,6 +116,7 @@ def executeShCmd(cmd, cfg, cwd, results):
                     # Workaround a Win32 and/or subprocess bug when appending.
                     if r[1] == 'a':
                         r[2].seek(0, 2)
+                    opened_files.append(r[2])
                 result = r[2]
             final_redirects.append(result)
 
@@ -176,7 +178,7 @@ def executeShCmd(cmd, cfg, cwd, results):
         else:
             err = ''
         procData[i] = (out,err)
-        
+
     # Read stderr out of the temp files.
     for i,f in stderrTempFiles:
         f.seek(0, 0)
@@ -199,6 +201,10 @@ def executeShCmd(cmd, cfg, cwd, results):
         else:
             exitCode = res
 
+    # Explicitly close any redirected files.
+    for f in opened_files:
+        f.close()
+
     if cmd.negate:
         exitCode = not exitCode