summaryrefslogtreecommitdiff
path: root/internal/iohelpers/filemode_test.go
blob: 8a7c9a2eca2cc05eeb30961b3544744bc8f49df3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package iohelpers

import (
	"fmt"
	"io/fs"
	"os"
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestWindowsFileMode(t *testing.T) {
	data := []struct {
		in, expected os.FileMode
	}{
		{0o000, 0o000},
		{0o100, 0o000},
		{0o111, 0o000},
		{0o123, 0o000},
		{0o177, 0o000},
		{0o400, 0o444},
		{0o412, 0o444},
		{0o467, 0o444},
		{0o542, 0o444},
		{0o200, 0o666},
		{0o211, 0o666},
		{0o300, 0o666},
		{0o644, 0o666},
		{0o600, 0o666},
		{0o755, 0o666},
		{0o777, 0o666},
	}
	for _, d := range data {
		actual := windowsFileMode(d.in)
		assert.Equal(t, fmt.Sprintf("%o", d.expected), fmt.Sprintf("%o", actual))
		assert.Equal(t, d.expected, actual)
	}

	// directories are always 0777
	assert.Equal(t, 0o777|fs.ModeDir, windowsFileMode(0o755|fs.ModeDir))
}