diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2022-01-09 14:45:24 -0500 |
|---|---|---|
| committer | Dave Henderson <dhenderson@gmail.com> | 2022-02-13 11:53:47 -0500 |
| commit | 4510ec9c9e9b1cdce83ec893dfe2aebfdd5db8d7 (patch) | |
| tree | 831048f23820fe9c3c8749bedbbf839a4a546621 /internal/iohelpers | |
| parent | 839e8973475f1f0bdc05657ea13cd23a16d85cd8 (diff) | |
Ensure output file paths exist
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
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)) } |
