aboutsummaryrefslogtreecommitdiff
path: root/internal/syscallcompat
diff options
context:
space:
mode:
authorJakob Unterwurzacher2019-01-14 22:11:15 +0100
committerJakob Unterwurzacher2019-01-14 22:11:15 +0100
commit20140e24ed339ef97b4f3946da3b05f930898713 (patch)
treec7c6059036396208e0aebd94b3320a39f4f497b1 /internal/syscallcompat
parent6542ddd2f9416e73f4ba18d9451601ea35af7ff3 (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
Diffstat (limited to 'internal/syscallcompat')
-rw-r--r--internal/syscallcompat/sys_common_test.go15
1 files changed, 10 insertions, 5 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)