Skip to content

Commit 81d6ec2

Browse files
iwdgoianlancetaylor
authored andcommitted
os: remove read-only directories in RemoveAll on Windows
Remove skipping of TestRemoveUnreadableDir on Windows. Fixes #26295 Change-Id: I364a3caa55406c855ece807759f6298f7e4ddf1e Reviewed-on: https://go-review.googlesource.com/c/go/+/203599 Run-TryBot: Ian Lance Taylor <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Ian Lance Taylor <[email protected]>
1 parent 60f34f7 commit 81d6ec2

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

src/os/removeall_noat.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package os
88

99
import (
1010
"io"
11+
"runtime"
1112
"syscall"
1213
)
1314

@@ -127,6 +128,13 @@ func removeAll(path string) error {
127128
if err1 == nil || IsNotExist(err1) {
128129
return nil
129130
}
131+
if runtime.GOOS == "windows" && IsPermission(err1) {
132+
if fs, err := Stat(path); err == nil {
133+
if err = Chmod(path, FileMode(0200 | int(fs.Mode()))); err == nil {
134+
err1 = Remove(path)
135+
}
136+
}
137+
}
130138
if err == nil {
131139
err = err1
132140
}

src/os/removeall_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ func TestRemoveAllButReadOnlyAndPathError(t *testing.T) {
378378

379379
func TestRemoveUnreadableDir(t *testing.T) {
380380
switch runtime.GOOS {
381-
case "js", "windows":
381+
case "js":
382382
t.Skipf("skipping test on %s", runtime.GOOS)
383383
}
384384

0 commit comments

Comments
 (0)