diff options
author | gcode@loowis.durge.org <gcode@loowis.durge.org@67cdc799-7952-0410-af00-57a81ceafa0f> | 2012-10-26 02:15:07 +0000 |
---|---|---|
committer | gcode@loowis.durge.org <gcode@loowis.durge.org@67cdc799-7952-0410-af00-57a81ceafa0f> | 2012-10-26 02:15:07 +0000 |
commit | 3c00c597507dbd97ebf07201ffab645ad1be7643 (patch) | |
tree | f388e40a4b16d1f419c1c915d32eeeebcb8e5cd0 | |
parent | b4e858df0e66579d1bf298e53dc13b00fa3bf90e (diff) | |
download | pyfilesystem-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.py | 3 | ||||
-rw-r--r-- | fs/tests/__init__.py | 1 |
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")) |