diff options
Diffstat (limited to 'internal/iohelpers')
| -rw-r--r-- | internal/iohelpers/filemode.go | 6 | ||||
| -rw-r--r-- | internal/iohelpers/filemode_test.go | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/internal/iohelpers/filemode.go b/internal/iohelpers/filemode.go index 35a3c142..7ac0e3df 100644 --- a/internal/iohelpers/filemode.go +++ b/internal/iohelpers/filemode.go @@ -17,8 +17,10 @@ func NormalizeFileMode(mode os.FileMode) os.FileMode { } func windowsFileMode(mode os.FileMode) os.FileMode { - // non-owner and execute bits are stripped - mode &^= 0o177 + // non-owner and execute bits are stripped on files + if !mode.IsDir() { + mode &^= 0o177 + } if mode&0o200 != 0 { // writeable implies read/write on Windows diff --git a/internal/iohelpers/filemode_test.go b/internal/iohelpers/filemode_test.go index 2ebb0ed7..8a7c9a2e 100644 --- a/internal/iohelpers/filemode_test.go +++ b/internal/iohelpers/filemode_test.go @@ -2,6 +2,7 @@ package iohelpers import ( "fmt" + "io/fs" "os" "testing" @@ -34,4 +35,7 @@ func TestWindowsFileMode(t *testing.T) { 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)) } |
