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  }