From 8d9962ee62b8effd9901e039517e53e55ab70aff Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Tue, 3 Mar 2015 14:52:03 +1100 Subject: [PATCH] MemFSTest.Rmdir_OpenedForReading --- samples/memfs/memfs_test.go | 38 ++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/samples/memfs/memfs_test.go b/samples/memfs/memfs_test.go index 0c9e194..0a4530a 100644 --- a/samples/memfs/memfs_test.go +++ b/samples/memfs/memfs_test.go @@ -400,5 +400,41 @@ func (t *MemFSTest) Rmdir_ReusesInodeID() { } func (t *MemFSTest) Rmdir_OpenedForReading() { - AssertTrue(false, "TODO") + var err error + + // Create a directory. + err = os.Mkdir(path.Join(t.mfs.Dir(), "dir"), 0700) + AssertEq(nil, err) + + // Open the directory for reading. + f, err := os.Open(path.Join(t.mfs.Dir(), "dir")) + defer func() { + if f != nil { + ExpectEq(nil, f.Close()) + } + }() + + AssertEq(nil, err) + + // Remove the directory. + err = os.Remove(path.Join(t.mfs.Dir(), "dir")) + AssertEq(nil, err) + + // Create a new directory, with the same name even, and add some contents + // within it. + err = os.MkdirAll(path.Join(t.mfs.Dir(), "foo"), 0700) + AssertEq(nil, err) + + err = os.MkdirAll(path.Join(t.mfs.Dir(), "bar"), 0700) + AssertEq(nil, err) + + err = os.MkdirAll(path.Join(t.mfs.Dir(), "baz"), 0700) + AssertEq(nil, err) + + // Attempt to read from the directory. This should succeed even though it has + // been unlinked, and we shouldn't see any junk from the new directory. + entries, err := f.Readdir(0) + + AssertEq(nil, err) + ExpectThat(entries, ElementsAre()) }