diff --git a/fuse/loopback_test.go b/fuse/loopback_test.go index 12ea9b56675812dcf5bf590e0c047c1d928da00a..4cbd24366349b37b10f2b24fe25d93580370b24f 100644 --- a/fuse/loopback_test.go +++ b/fuse/loopback_test.go @@ -2,6 +2,7 @@ package fuse import ( "bytes" + "exec" "fmt" "io/ioutil" "log" @@ -728,3 +729,24 @@ func TestDoubleOpen(t *testing.T) { CheckSuccess(err) defer rwFile.Close() } + +func TestUmask(t *testing.T) { + ts := NewTestCase(t) + defer ts.Cleanup() + + // Make sure system setting does not affect test. + fn := ts.mnt+"/file" + mask := 020 + cmd := exec.Command("/bin/sh", "-c", + fmt.Sprintf("umask %o && mkdir %s", mask, fn)) + cmd.Run() + + fi, err := os.Lstat(fn) + CheckSuccess(err) + + expect := mask ^ 0777 + got := int(fi.Mode & 0777) + if got != expect { + t.Errorf("got %o, expect mode %o for file %s", got, expect, fn) + } +}