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  }