| // Copyright 2019 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // +build !plan9,!windows,!js |
| |
| package renameio |
| |
| import ( |
| "io/ioutil" |
| "os" |
| "path/filepath" |
| "syscall" |
| "testing" |
| ) |
| |
| func TestWriteFileModeAppliesUmask(t *testing.T) { |
| dir, err := ioutil.TempDir("", "renameio") |
| if err != nil { |
| t.Fatalf("Failed to create temporary directory: %v", err) |
| } |
| defer os.RemoveAll(dir) |
| |
| const mode = 0644 |
| const umask = 0007 |
| defer syscall.Umask(syscall.Umask(umask)) |
| |
| file := filepath.Join(dir, "testWrite") |
| err = WriteFile(file, []byte("go-build"), mode) |
| if err != nil { |
| t.Fatalf("Failed to write file: %v", err) |
| } |
| |
| fi, err := os.Stat(file) |
| if err != nil { |
| t.Fatalf("Stat %q (looking for mode %#o): %s", file, mode, err) |
| } |
| |
| if fi.Mode()&os.ModePerm != 0640 { |
| t.Errorf("Stat %q: mode %#o want %#o", file, fi.Mode()&os.ModePerm, 0640) |
| } |
| } |