diff options
| author | Jakob Unterwurzacher | 2019-01-14 22:11:15 +0100 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2019-01-14 22:11:15 +0100 | 
| commit | 20140e24ed339ef97b4f3946da3b05f930898713 (patch) | |
| tree | c7c6059036396208e0aebd94b3320a39f4f497b1 | |
| parent | 6542ddd2f9416e73f4ba18d9451601ea35af7ff3 (diff) | |
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
| -rw-r--r-- | internal/syscallcompat/sys_common_test.go | 15 | ||||
| -rw-r--r-- | tests/matrix/matrix_test.go | 2 | ||||
| -rw-r--r-- | tests/test_helpers/mount_unmount.go | 3 | 
3 files changed, 13 insertions, 7 deletions
| 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) diff --git a/tests/matrix/matrix_test.go b/tests/matrix/matrix_test.go index ad2eeae..e4c6b5f 100644 --- a/tests/matrix/matrix_test.go +++ b/tests/matrix/matrix_test.go @@ -625,7 +625,7 @@ func doTestUtimesNano(t *testing.T, path string) {  	for i, tc := range utimeTestcases {  		err := syscall.UtimesNano(path, tc.in[:])  		if err != nil { -			t.Fatal(err) +			t.Fatalf("%q: %v", path, err)  		}  		var st syscall.Stat_t  		err = syscall.Stat(path, &st) diff --git a/tests/test_helpers/mount_unmount.go b/tests/test_helpers/mount_unmount.go index 1d43418..20b1143 100644 --- a/tests/test_helpers/mount_unmount.go +++ b/tests/test_helpers/mount_unmount.go @@ -133,7 +133,8 @@ func UnmountErr(dir string) (err error) {  	var fdsNow []string  	pid := MountInfo[dir].Pid  	fds := MountInfo[dir].Fds -	if pid <= 0 { +	if pid <= 0 && runtime.GOOS == "linux" { +		// The FD leak check only works on Linux.  		fmt.Printf("UnmountErr: %q was not found in MountInfo, cannot check for FD leaks\n", dir)  	} | 
