]> granicus.if.org Git - python/commitdiff
Add test coverage for os.removedirs (#16775)
authorAndrew Svetlov <andrew.svetlov@gmail.com>
Tue, 25 Dec 2012 10:18:09 +0000 (12:18 +0200)
committerAndrew Svetlov <andrew.svetlov@gmail.com>
Tue, 25 Dec 2012 10:18:09 +0000 (12:18 +0200)
Lib/test/test_os.py

index 612c62a3409780aa90b3db10032a84c950f4ba56..5b67da17baa8b1e38ad0033c85fe700c6fb6be1b 100644 (file)
@@ -634,6 +634,50 @@ class MakedirTests(unittest.TestCase):
 
         os.removedirs(path)
 
+
+class RemoveDirsTests(unittest.TestCase):
+    def setUp(self):
+        os.makedirs(support.TESTFN)
+
+    def tearDown(self):
+        support.rmtree(support.TESTFN)
+
+    def test_remove_all(self):
+        dira = os.path.join(support.TESTFN, 'dira')
+        os.mkdir(dira)
+        dirb = os.path.join(dira, 'dirb')
+        os.mkdir(dirb)
+        os.removedirs(dirb)
+        self.assertFalse(os.path.exists(dirb))
+        self.assertFalse(os.path.exists(dira))
+        self.assertFalse(os.path.exists(support.TESTFN))
+
+    def test_remove_partial(self):
+        dira = os.path.join(support.TESTFN, 'dira')
+        os.mkdir(dira)
+        dirb = os.path.join(dira, 'dirb')
+        os.mkdir(dirb)
+        with open(os.path.join(dira, 'file.txt'), 'w') as f:
+            f.write('text')
+        os.removedirs(dirb)
+        self.assertFalse(os.path.exists(dirb))
+        self.assertTrue(os.path.exists(dira))
+        self.assertTrue(os.path.exists(support.TESTFN))
+
+    def test_remove_nothing(self):
+        dira = os.path.join(support.TESTFN, 'dira')
+        os.mkdir(dira)
+        dirb = os.path.join(dira, 'dirb')
+        os.mkdir(dirb)
+        with open(os.path.join(dirb, 'file.txt'), 'w') as f:
+            f.write('text')
+        with self.assertRaises(OSError):
+            os.removedirs(dirb)
+        self.assertTrue(os.path.exists(dirb))
+        self.assertTrue(os.path.exists(dira))
+        self.assertTrue(os.path.exists(support.TESTFN))
+
+
 class DevNullTests(unittest.TestCase):
     def test_devnull(self):
         with open(os.devnull, 'wb') as f:
@@ -642,6 +686,7 @@ class DevNullTests(unittest.TestCase):
         with open(os.devnull, 'rb') as f:
             self.assertEqual(f.read(), b'')
 
+
 class URandomTests(unittest.TestCase):
     def test_urandom_length(self):
         self.assertEqual(len(os.urandom(0)), 0)
@@ -1310,6 +1355,7 @@ def test_main():
         PidTests,
         LoginTests,
         LinkTests,
+        RemoveDirsTests,
     )
 
 if __name__ == "__main__":