Revert r152915. Chapuni's WinWaitReleased refactoring: It doesn't work for me
authorFrancois Pichet <pichet2000@gmail.com>
Fri, 16 Mar 2012 22:50:01 +0000 (22:50 +0000)
committerFrancois Pichet <pichet2000@gmail.com>
Fri, 16 Mar 2012 22:50:01 +0000 (22:50 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152958 91177308-0d34-0410-b5e6-96231b3b80d8

utils/lit/lit/TestRunner.py

index fa69f72caf130d137e3138ae634c66547933239e..494ad0dc9559a84d6fb9a21bd9fac4ddfe9595ef 100644 (file)
@@ -29,20 +29,12 @@ def RemoveForce(f):
     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 @@ def WinWaitReleased(f):
             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,