From 5b3593580189274deb86e8f8d58e9782a0d7fb52 Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Wed, 9 Sep 2015 16:06:57 +1000 Subject: [PATCH] StatFSTest.Syscall_ZeroValues --- samples/statfs/statfs_test.go | 49 ++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/samples/statfs/statfs_test.go b/samples/statfs/statfs_test.go index fef1728..9914e7c 100644 --- a/samples/statfs/statfs_test.go +++ b/samples/statfs/statfs_test.go @@ -15,16 +15,38 @@ package statfs_test import ( + "path" + "path/filepath" + "syscall" "testing" "github.com/jacobsa/fuse/fuseutil" "github.com/jacobsa/fuse/samples" "github.com/jacobsa/fuse/samples/statfs" + . "github.com/jacobsa/oglematchers" . "github.com/jacobsa/ogletest" ) func TestStatFS(t *testing.T) { RunTests(t) } +//////////////////////////////////////////////////////////////////////// +// Helpers +//////////////////////////////////////////////////////////////////////// + +func convertName(in []int8) (s string) { + var tmp []byte + for _, v := range in { + if v == 0 { + break + } + + tmp = append(tmp, byte(v)) + } + + s = string(tmp) + return +} + //////////////////////////////////////////////////////////////////////// // Boilerplate //////////////////////////////////////////////////////////////////////// @@ -58,7 +80,32 @@ func (t *StatFSTest) SetUp(ti *TestInfo) { //////////////////////////////////////////////////////////////////////// func (t *StatFSTest) Syscall_ZeroValues() { - AssertTrue(false, "TODO") + var err error + var stat syscall.Statfs_t + + // Compute the canonicalized directory, for use below. + canonicalDir, err := filepath.EvalSymlinks(t.Dir) + AssertEq(nil, err) + canonicalDir = path.Clean(canonicalDir) + + // Call without configuring a canned response, meaning the OS will see the + // zero value for each field. The assertions below act as documentation for + // the OS's behavior in this case. + err = syscall.Statfs(t.Dir, &stat) + AssertEq(nil, err) + + ExpectEq(4096, stat.Bsize) + ExpectEq(65536, stat.Iosize) + ExpectEq(0, stat.Blocks) + ExpectEq(0, stat.Bfree) + ExpectEq(0, stat.Bavail) + ExpectEq(0, stat.Files) + ExpectEq(0, stat.Ffree) + ExpectEq("osxfusefs", convertName(stat.Fstypename[:])) + ExpectEq(canonicalDir, convertName(stat.Mntonname[:])) + ExpectThat( + convertName(stat.Mntfromname[:]), + MatchesRegexp(`mount_osxfusefs@osxfuse\d+`)) } func (t *StatFSTest) Syscall_NonZeroValues() {