[Checkins] SVN: relstorage/trunk/relstorage/tests/blob/testblob.py Avoid Windows issues when removing a directory tree

Shane Hathaway shane at hathawaymix.org
Fri Sep 25 23:58:53 EDT 2009


Log message for revision 104563:
  Avoid Windows issues when removing a directory tree
  

Changed:
  U   relstorage/trunk/relstorage/tests/blob/testblob.py

-=-
Modified: relstorage/trunk/relstorage/tests/blob/testblob.py
===================================================================
--- relstorage/trunk/relstorage/tests/blob/testblob.py	2009-09-26 00:52:31 UTC (rev 104562)
+++ relstorage/trunk/relstorage/tests/blob/testblob.py	2009-09-26 03:58:53 UTC (rev 104563)
@@ -20,7 +20,7 @@
 import os
 import random
 import re
-import shutil
+import stat
 import struct
 import sys
 import tempfile
@@ -461,7 +461,7 @@
 
     def tearDown(self):
         os.chdir(self.here)
-        shutil.rmtree(self.tmp)
+        rmtree(self.tmp)
 
     def testSetUp(self):
         transaction.abort()
@@ -472,9 +472,22 @@
 
 def clean(tmp):
     if os.path.isdir(tmp):
-        shutil.rmtree(tmp)
+        rmtree(tmp)
 
+def rmtree(path):
+    """Remove a tree without causing Windows file access errors"""
+    # copied from setupstack.py
+    for path, dirs, files in os.walk(path, False):
+        for fname in files:
+            fname = os.path.join(path, fname)
+            os.chmod(fname, stat.S_IWUSR)
+            os.remove(fname)
+        for dname in dirs:
+            dname = os.path.join(path, dname)
+            os.rmdir(dname)
+    os.rmdir(path)
 
+
 def storage_reusable_suite(prefix, factory,
                            test_blob_storage_recovery=False,
                            test_packing=False,



More information about the checkins mailing list