github.com/safing/portbase@v0.19.5/utils/renameio/writefile_test.go (about) 1 //go:build darwin || dragonfly || freebsd || linux || nacl || netbsd || openbsd || solaris || windows 2 3 package renameio 4 5 import ( 6 "bytes" 7 "os" 8 "path/filepath" 9 "testing" 10 ) 11 12 func TestWriteFile(t *testing.T) { 13 t.Parallel() 14 15 d, err := os.MkdirTemp("", "test-renameio-testwritefile") 16 if err != nil { 17 t.Fatal(err) 18 } 19 defer func() { 20 _ = os.RemoveAll(d) 21 }() 22 23 filename := filepath.Join(d, "hello.sh") 24 25 wantData := []byte("#!/bin/sh\necho \"Hello World\"\n") 26 wantPerm := os.FileMode(0o0600) 27 if err := WriteFile(filename, wantData, wantPerm); err != nil { 28 t.Fatal(err) 29 } 30 31 gotData, err := os.ReadFile(filename) 32 if err != nil { 33 t.Fatal(err) 34 } 35 if !bytes.Equal(gotData, wantData) { 36 t.Errorf("got data %v, want data %v", gotData, wantData) 37 } 38 39 fi, err := os.Stat(filename) 40 if err != nil { 41 t.Fatal(err) 42 } 43 if gotPerm := fi.Mode() & os.ModePerm; gotPerm != wantPerm { 44 t.Errorf("got permissions 0%o, want permissions 0%o", gotPerm, wantPerm) 45 } 46 }