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 }