From 284ddf44b02139a1f487459c76a18b8099d1328e Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Wed, 9 Sep 2015 09:28:05 +1000 Subject: [PATCH] MemFSTest.Statfs --- samples/memfs/memfs.go | 6 ++++++ samples/memfs/memfs_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/samples/memfs/memfs.go b/samples/memfs/memfs.go index 1d4032c..4e8c3a5 100644 --- a/samples/memfs/memfs.go +++ b/samples/memfs/memfs.go @@ -28,6 +28,12 @@ import ( "github.com/jacobsa/syncutil" ) +// The capacities of the file system, as reported to statfs(2). +const ( + Capacity_Bytes = 1 << 50 + Capacity_Files = 1 << 30 +) + type memFS struct { fuseutil.NotImplementedFileSystem diff --git a/samples/memfs/memfs_test.go b/samples/memfs/memfs_test.go index 7d47c4f..0a7ea29 100644 --- a/samples/memfs/memfs_test.go +++ b/samples/memfs/memfs_test.go @@ -1614,3 +1614,27 @@ func (t *MemFSTest) RenameNonExistentFile() { err = os.Rename(path.Join(t.Dir, "foo"), path.Join(t.Dir, "bar")) ExpectThat(err, Error(HasSubstr("no such file"))) } + +func (t *MemFSTest) Statfs() { + var err error + var stat syscall.Statfs_t + + // Write a few bytes of file content. + const content = "taco" + + err = ioutil.WriteFile(path.Join(t.Dir, "foo"), []byte(content), 0400) + AssertEq(nil, err) + + // Stat the file system. + err = syscall.Statfs(t.Dir, &stat) + AssertEq(nil, err) + + ExpectEq(1, stat.Bsize) + + ExpectEq(memfs.Capacity_Bytes, stat.Blocks) + ExpectEq(memfs.Capacity_Bytes-len(content), stat.Bfree) + ExpectEq(stat.Bfree, stat.Bavail) + + ExpectEq(memfs.Capacity_Files, stat.Files) + ExpectEq(memfs.Capacity_Files-2, stat.Ffree) +}