func (t *MemFSTest) Mkdir_TwoLevels() { var err error var fi os.FileInfo var stat *syscall.Stat_t var entries []os.FileInfo // Create a directory within the root. err = os.Mkdir(path.Join(t.Dir, "parent"), 0700) AssertEq(nil, err) // Create a child of that directory. createTime := time.Now() err = os.Mkdir(path.Join(t.Dir, "parent/dir"), 0754) AssertEq(nil, err) // Stat the directory. fi, err = os.Stat(path.Join(t.Dir, "parent/dir")) stat = fi.Sys().(*syscall.Stat_t) AssertEq(nil, err) ExpectEq("dir", fi.Name()) ExpectEq(0, fi.Size()) ExpectEq(os.ModeDir|applyUmask(0754), fi.Mode()) ExpectThat(fi, fusetesting.MtimeIsWithin(createTime, timeSlop)) ExpectThat(fi, fusetesting.BirthtimeIsWithin(createTime, timeSlop)) ExpectTrue(fi.IsDir()) ExpectNe(0, stat.Ino) ExpectEq(1, stat.Nlink) ExpectEq(currentUid(), stat.Uid) ExpectEq(currentGid(), stat.Gid) ExpectEq(0, stat.Size) // Check the parent's mtime. fi, err = os.Stat(path.Join(t.Dir, "parent")) AssertEq(nil, err) ExpectThat(fi, fusetesting.MtimeIsWithin(createTime, timeSlop)) // Read the directory. entries, err = fusetesting.ReadDirPicky(path.Join(t.Dir, "parent/dir")) AssertEq(nil, err) ExpectThat(entries, ElementsAre()) // Read the parent. entries, err = fusetesting.ReadDirPicky(path.Join(t.Dir, "parent")) AssertEq(nil, err) AssertEq(1, len(entries)) fi = entries[0] ExpectEq("dir", fi.Name()) ExpectEq(os.ModeDir|applyUmask(0754), fi.Mode()) }
func (t *MemFSTest) ModifyExistingFile_InSubDir() { var err error var n int var fi os.FileInfo var stat *syscall.Stat_t // Create a sub-directory. dirName := path.Join(t.Dir, "dir") err = os.Mkdir(dirName, 0700) AssertEq(nil, err) // Write a file. fileName := path.Join(dirName, "foo") createTime := time.Now() err = ioutil.WriteFile(fileName, []byte("Hello, world!"), 0600) AssertEq(nil, err) // Open the file and modify it. f, err := os.OpenFile(fileName, os.O_WRONLY, 0400) t.ToClose = append(t.ToClose, f) AssertEq(nil, err) modifyTime := time.Now() n, err = f.WriteAt([]byte("H"), 0) AssertEq(nil, err) AssertEq(1, n) // Stat the file. fi, err = os.Stat(fileName) stat = fi.Sys().(*syscall.Stat_t) AssertEq(nil, err) ExpectEq("foo", fi.Name()) ExpectEq(len("Hello, world!"), fi.Size()) ExpectEq(applyUmask(0600), fi.Mode()) ExpectThat(fi, fusetesting.MtimeIsWithin(modifyTime, timeSlop)) ExpectThat(fi, fusetesting.BirthtimeIsWithin(createTime, timeSlop)) ExpectFalse(fi.IsDir()) ExpectNe(0, stat.Ino) ExpectEq(1, stat.Nlink) ExpectEq(currentUid(), stat.Uid) ExpectEq(currentGid(), stat.Gid) ExpectEq(len("Hello, world!"), stat.Size) // Read the file back. slice, err := ioutil.ReadFile(fileName) AssertEq(nil, err) ExpectEq("Hello, world!", string(slice)) }
func (t *MemFSTest) CreateNewFile_InSubDir() { var err error var fi os.FileInfo var stat *syscall.Stat_t // Create a sub-dir. dirName := path.Join(t.Dir, "dir") err = os.Mkdir(dirName, 0700) AssertEq(nil, err) // Write a file. fileName := path.Join(dirName, "foo") const contents = "Hello\x00world" createTime := time.Now() err = ioutil.WriteFile(fileName, []byte(contents), 0400) AssertEq(nil, err) // Stat it. fi, err = os.Stat(fileName) stat = fi.Sys().(*syscall.Stat_t) AssertEq(nil, err) ExpectEq("foo", fi.Name()) ExpectEq(len(contents), fi.Size()) ExpectEq(applyUmask(0400), fi.Mode()) ExpectThat(fi, fusetesting.MtimeIsWithin(createTime, timeSlop)) ExpectThat(fi, fusetesting.BirthtimeIsWithin(createTime, timeSlop)) ExpectFalse(fi.IsDir()) ExpectNe(0, stat.Ino) ExpectEq(1, stat.Nlink) ExpectEq(currentUid(), stat.Uid) ExpectEq(currentGid(), stat.Gid) ExpectEq(len(contents), stat.Size) // Read it back. slice, err := ioutil.ReadFile(fileName) AssertEq(nil, err) ExpectEq(contents, string(slice)) }