From: Bryan C. Mills Date: Mon, 18 Sep 2023 15:48:15 +0000 (-0400) Subject: os: in TestMkdirStickyUmask, create a non-sticky directory as a control X-Git-Tag: go1.22rc1~805 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=15e5e35be5894e059c343679d895abb258b967c2;p=gostls13.git os: in TestMkdirStickyUmask, create a non-sticky directory as a control Fixes #62684. Change-Id: If7afa811526973671d83e21440cbbc1a7b2120d8 Reviewed-on: https://go-review.googlesource.com/c/go/+/529115 Auto-Submit: Bryan Mills LUCI-TryBot-Result: Go LUCI Reviewed-by: Ian Lance Taylor --- diff --git a/src/os/os_unix_test.go b/src/os/os_unix_test.go index e4271ff905..98e436fae6 100644 --- a/src/os/os_unix_test.go +++ b/src/os/os_unix_test.go @@ -257,8 +257,23 @@ func TestMkdirStickyUmask(t *testing.T) { const umask = 0077 dir := newDir("TestMkdirStickyUmask", t) defer RemoveAll(dir) + oldUmask := syscall.Umask(umask) defer syscall.Umask(oldUmask) + + // We have set a umask, but if the parent directory happens to have a default + // ACL, the umask may be ignored. To prevent spurious failures from an ACL, + // we create a non-sticky directory as a “control case” to compare against our + // sticky-bit “experiment”. + control := filepath.Join(dir, "control") + if err := Mkdir(control, 0755); err != nil { + t.Fatal(err) + } + cfi, err := Stat(control) + if err != nil { + t.Fatal(err) + } + p := filepath.Join(dir, "dir1") if err := Mkdir(p, ModeSticky|0755); err != nil { t.Fatal(err) @@ -267,8 +282,11 @@ func TestMkdirStickyUmask(t *testing.T) { if err != nil { t.Fatal(err) } - if mode := fi.Mode(); (mode&umask) != 0 || (mode&^ModePerm) != (ModeDir|ModeSticky) { - t.Errorf("unexpected mode %s", mode) + + got := fi.Mode() + want := cfi.Mode() | ModeSticky + if got != want { + t.Errorf("Mkdir(_, ModeSticky|0755) created dir with mode %v; want %v", got, want) } }