From 20140e24ed339ef97b4f3946da3b05f930898713 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Mon, 14 Jan 2019 22:11:15 +0100 Subject: tests: reduce noise on MacOS This should get rid of Openat: O_NOFOLLOW missing: flags = 0x0 Fchmodat: adding missing AT_SYMLINK_NOFOLLOW flag sys_common_test.go:203: chmod on symlink should have failed, but did not. New mode=0333 UnmountErr: "[...]/057376762.mnt" was not found in MountInfo, cannot check for FD leak and add some context to --- FAIL: TestUtimesNano (0.00s) matrix_test.go:628: no such file or directory See https://github.com/rfjakob/gocryptfs/pull/343#issuecomment-453888006 for full test output --- internal/syscallcompat/sys_common_test.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'internal/syscallcompat') diff --git a/internal/syscallcompat/sys_common_test.go b/internal/syscallcompat/sys_common_test.go index 3e2d80e..bbb6dbc 100644 --- a/internal/syscallcompat/sys_common_test.go +++ b/internal/syscallcompat/sys_common_test.go @@ -38,7 +38,9 @@ func TestReadlinkat(t *testing.T) { } func TestOpenat(t *testing.T) { - _, err := Openat(tmpDirFd, "testOpenAt", 0, 0) + // Always pass O_NOFOLLOW to avoid this warning: + // Openat: O_NOFOLLOW missing: flags = 0x0" + _, err := Openat(tmpDirFd, "testOpenAt", syscall.O_NOFOLLOW, 0) if err == nil { t.Errorf("should have failed") } @@ -47,7 +49,7 @@ func TestOpenat(t *testing.T) { t.Fatal(err) } fd.Close() - rawFd, err := Openat(tmpDirFd, "testOpenAt", 0, 0) + rawFd, err := Openat(tmpDirFd, "testOpenAt", syscall.O_NOFOLLOW, 0) if err != nil { t.Fatal(err) } @@ -56,7 +58,7 @@ func TestOpenat(t *testing.T) { t.Fatalf("rawFd=%d", rawFd) } // Test with absolute path - rawFd, err = Openat(-1, tmpDir+"/testOpenAt", 0, 0) + rawFd, err = Openat(-1, tmpDir+"/testOpenAt", syscall.O_NOFOLLOW, 0) if err != nil { t.Fatal(err) } @@ -156,7 +158,7 @@ func TestUnlinkat(t *testing.T) { } } -func TestFchmodat(t *testing.T) { +func TestFchmodatNofollow(t *testing.T) { regular := "TestFchmodat_Regular" f, err := os.OpenFile(tmpDir+"/"+regular, os.O_CREATE|os.O_WRONLY, 0000) if err != nil { @@ -197,7 +199,10 @@ func TestFchmodat(t *testing.T) { // Check what happens on a symlink err = FchmodatNofollow(dirfd, symlink, 0333) - if err == nil { + // On Darwin, permissions on symlinks are significant and can be changed. On + // Linux they are ignored, and FchmodatNofollow rejects attempts to change + // them. + if err == nil && runtime.GOOS == "linux" { syscall.Lstat(tmpDir+"/"+symlink, &st) st.Mode &= 0777 t.Errorf("chmod on symlink should have failed, but did not. New mode=%#0o", st.Mode) -- cgit v1.2.3