github.com/hairyhenderson/gomplate/v4@v4.0.0-pre-2.0.20240520121557-362f058f0c93/internal/iohelpers/filemode_test.go (about)

     1  package iohelpers
     2  
     3  import (
     4  	"fmt"
     5  	"io/fs"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestWindowsFileMode(t *testing.T) {
    13  	data := []struct {
    14  		in, expected os.FileMode
    15  	}{
    16  		{0o000, 0o000},
    17  		{0o100, 0o000},
    18  		{0o111, 0o000},
    19  		{0o123, 0o000},
    20  		{0o177, 0o000},
    21  		{0o400, 0o444},
    22  		{0o412, 0o444},
    23  		{0o467, 0o444},
    24  		{0o542, 0o444},
    25  		{0o200, 0o666},
    26  		{0o211, 0o666},
    27  		{0o300, 0o666},
    28  		{0o644, 0o666},
    29  		{0o600, 0o666},
    30  		{0o755, 0o666},
    31  		{0o777, 0o666},
    32  	}
    33  	for _, d := range data {
    34  		actual := windowsFileMode(d.in)
    35  		assert.Equal(t, fmt.Sprintf("%o", d.expected), fmt.Sprintf("%o", actual))
    36  		assert.Equal(t, d.expected, actual)
    37  	}
    38  
    39  	// directories are always 0777
    40  	assert.Equal(t, 0o777|fs.ModeDir, windowsFileMode(0o755|fs.ModeDir))
    41  }