[llvm-commits] [llvm] r152958 - /llvm/trunk/utils/lit/lit/TestRunner.py

Francois Pichet pichet2000 at gmail.com
Fri Mar 16 15:50:01 PDT 2012


Author: fpichet
Date: Fri Mar 16 17:50:01 2012
New Revision: 152958

URL: http://llvm.org/viewvc/llvm-project?rev=152958&view=rev
Log:
Revert r152915. Chapuni's WinWaitReleased refactoring: It doesn't work for me

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=152958&r1=152957&r2=152958&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/TestRunner.py (original)
+++ llvm/trunk/utils/lit/lit/TestRunner.py Fri Mar 16 17:50:01 2012
@@ -29,20 +29,12 @@
     except OSError:
         pass
 
-def WinWaitReleased(f):
-    import time, win32file
+def WinRename(f_o, f_n):
+    import time
     retry_cnt = 256
-    while True:
+    while (True):
         try:
-            h = win32file.CreateFile(
-                f,
-                0, # Querying, neither GENERIC_READ nor GENERIC_WRITE
-                0, # Exclusive
-                None,
-                win32file.OPEN_EXISTING,
-                win32file.FILE_ATTRIBUTE_NORMAL,
-                None)
-            h.close()
+            os.rename(f_o, f_n)
             break
         except WindowsError, (winerror, strerror):
             retry_cnt = retry_cnt - 1
@@ -53,6 +45,21 @@
             else:
                 raise
 
+def WinWaitReleased(f):
+    import random
+    t = "%s%06d" % (f, random.randint(0, 999999))
+    RemoveForce(t)
+    try:
+        WinRename(f, t) # rename
+        WinRename(t, f) # restore
+    except WindowsError, (winerror, strerror):
+        if winerror in (2, 3):
+            # 2: ERROR_FILE_NOT_FOUND
+            # 3: ERROR_PATH_NOT_FOUND
+            pass
+        else:
+            raise
+
 def executeCommand(command, cwd=None, env=None):
     p = subprocess.Popen(command, cwd=cwd,
                          stdin=subprocess.PIPE,





More information about the llvm-commits mailing list