Merge pull request #29 from mcuadros/memfs-fix-rename
memfs: fix Rename leftovers
diff --git a/memfs/storage.go b/memfs/storage.go
index 0856f82..26887a7 100644
--- a/memfs/storage.go
+++ b/memfs/storage.go
@@ -139,8 +139,11 @@
s.files[to].BaseFilename = filepath.Base(to)
s.children[to] = s.children[from]
- delete(s.children, from)
- delete(s.files, from)
+ defer func() {
+ delete(s.children, from)
+ delete(s.files, from)
+ delete(s.children[filepath.Dir(from)], filepath.Base(from))
+ }()
return s.createParent(to, 0644, s.files[to])
}
diff --git a/test/fs_suite.go b/test/fs_suite.go
index e819d69..26b6568 100644
--- a/test/fs_suite.go
+++ b/test/fs_suite.go
@@ -523,6 +523,10 @@
err := WriteFile(s.FS, "foo", nil, 0644)
c.Assert(err, IsNil)
+ files, err := s.FS.ReadDir("")
+ c.Assert(err, IsNil)
+ c.Assert(files, HasLen, 1)
+
err = s.FS.Rename("foo", "bar")
c.Assert(err, IsNil)
@@ -531,8 +535,12 @@
c.Assert(os.IsNotExist(err), Equals, true)
bar, err := s.FS.Stat("bar")
- c.Assert(bar, NotNil)
c.Assert(err, IsNil)
+ c.Assert(bar, NotNil)
+
+ files, err = s.FS.ReadDir("")
+ c.Assert(err, IsNil)
+ c.Assert(files, HasLen, 1)
}
func (s *FilesystemSuite) TestRenameToDir(c *C) {