github.com/nalekseevs/itns-golangci-lint@v1.0.2/internal/renameio/umask_test.go (about) 1 // Copyright 2019 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 //go:build !plan9 && !windows && !js 6 7 package renameio 8 9 import ( 10 "os" 11 "path/filepath" 12 "syscall" 13 "testing" 14 ) 15 16 func TestWriteFileModeAppliesUmask(t *testing.T) { 17 dir, err := os.MkdirTemp("", "renameio") 18 if err != nil { 19 t.Fatalf("Failed to create temporary directory: %v", err) 20 } 21 defer os.RemoveAll(dir) 22 23 const mode = 0644 24 const umask = 0007 25 defer syscall.Umask(syscall.Umask(umask)) 26 27 file := filepath.Join(dir, "testWrite") 28 err = WriteFile(file, []byte("go-build"), mode) 29 if err != nil { 30 t.Fatalf("Failed to write file: %v", err) 31 } 32 33 fi, err := os.Stat(file) 34 if err != nil { 35 t.Fatalf("Stat %q (looking for mode %#o): %s", file, mode, err) 36 } 37 38 if fi.Mode()&os.ModePerm != 0640 { 39 t.Errorf("Stat %q: mode %#o want %#o", file, fi.Mode()&os.ModePerm, 0640) 40 } 41 }