diff --git a/src/os/os_test.go b/src/os/os_test.go index 4c90525bb1..cca1b58fe7 100644 --- a/src/os/os_test.go +++ b/src/os/os_test.go @@ -1345,6 +1345,9 @@ var hasNoatime = sync.OnceValue(func() bool { // but the syscall is OS-specific and is not even wired into Go stdlib. // // Only used on NetBSD (which ignores explicit atime updates with noatime). + if runtime.GOOS != "netbsd" { + return false + } mounts, _ := ReadFile("/proc/mounts") return bytes.Contains(mounts, []byte("noatime")) }) diff --git a/src/os/root_test.go b/src/os/root_test.go index 6c8c892429..b91d85d176 100644 --- a/src/os/root_test.go +++ b/src/os/root_test.go @@ -449,7 +449,8 @@ func TestRootChtimes(t *testing.T) { atime: time.Now(), mtime: time.Time{}, }} { - if runtime.GOOS == "js" { + switch runtime.GOOS { + case "js", "plan9": times.atime = times.atime.Truncate(1 * time.Second) times.mtime = times.mtime.Truncate(1 * time.Second) } @@ -465,8 +466,10 @@ func TestRootChtimes(t *testing.T) { if got := st.ModTime(); !times.mtime.IsZero() && !got.Equal(times.mtime) { t.Errorf("after root.Chtimes(%q, %v, %v): got mtime=%v, want %v", test.open, times.atime, times.mtime, got, times.mtime) } - if got := os.Atime(st); !times.atime.IsZero() && !got.Equal(times.atime) { - t.Errorf("after root.Chtimes(%q, %v, %v): got atime=%v, want %v", test.open, times.atime, times.mtime, got, times.atime) + if !hasNoatime() { + if got := os.Atime(st); !times.atime.IsZero() && !got.Equal(times.atime) { + t.Errorf("after root.Chtimes(%q, %v, %v): got atime=%v, want %v", test.open, times.atime, times.mtime, got, times.atime) + } } } })