summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgcode@loowis.durge.org <gcode@loowis.durge.org@67cdc799-7952-0410-af00-57a81ceafa0f>2012-10-26 02:15:07 +0000
committergcode@loowis.durge.org <gcode@loowis.durge.org@67cdc799-7952-0410-af00-57a81ceafa0f>2012-10-26 02:15:07 +0000
commit3c00c597507dbd97ebf07201ffab645ad1be7643 (patch)
treef388e40a4b16d1f419c1c915d32eeeebcb8e5cd0
parentb4e858df0e66579d1bf298e53dc13b00fa3bf90e (diff)
downloadpyfilesystem-3c00c597507dbd97ebf07201ffab645ad1be7643.tar.gz
Prevent MemoryFS.removedir(..., recursive=True) removing non-empty parent directories, and fixed up corresponding unit test.
Fixes Issue 137 git-svn-id: http://pyfilesystem.googlecode.com/svn/trunk@825 67cdc799-7952-0410-af00-57a81ceafa0f
-rw-r--r--fs/memoryfs.py3
-rw-r--r--fs/tests/__init__.py1
2 files changed, 4 insertions, 0 deletions
diff --git a/fs/memoryfs.py b/fs/memoryfs.py
index 91aa4c3..0d56f37 100644
--- a/fs/memoryfs.py
+++ b/fs/memoryfs.py
@@ -484,6 +484,9 @@ class MemoryFS(FS):
if not dirname:
raise RemoveRootError(path)
del parent_dir.contents[dirname]
+ # stop recursing if the directory has other contents
+ if parent_dir.contents:
+ break
else:
pathname, dirname = pathsplit(path)
parent_dir = self._get_dir_entry(pathname)
diff --git a/fs/tests/__init__.py b/fs/tests/__init__.py
index d44e43a..bbfeff1 100644
--- a/fs/tests/__init__.py
+++ b/fs/tests/__init__.py
@@ -419,6 +419,7 @@ class FSTestCases(object):
self.fs.removedir("foo/bar/baz", recursive=True)
self.assert_(not check("foo/bar/baz"))
self.assert_(not check("foo/bar"))
+ self.assert_(check("foo/file.txt"))
# Ensure that force=True works as expected
self.fs.makedir("frollic/waggle", recursive=True)
self.fs.setcontents("frollic/waddle.txt",b("waddlewaddlewaddle"))