diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2019-03-18 20:27:59 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2019-03-18 20:27:59 +0000 |
commit | a8b58d84bf4fd9c925a835ba39c1c552383bc61b (patch) | |
tree | 97d68e0e70fb780b04f3171a0f53102a39c23f41 /libgo/go/os | |
parent | 891cd9e3b9a89b0461fb838d38c51b6fab596337 (diff) | |
download | gcc-a8b58d84bf4fd9c925a835ba39c1c552383bc61b.zip gcc-a8b58d84bf4fd9c925a835ba39c1c552383bc61b.tar.gz gcc-a8b58d84bf4fd9c925a835ba39c1c552383bc61b.tar.bz2 |
libgo: update to Go 1.12.1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/167749
From-SVN: r269780
Diffstat (limited to 'libgo/go/os')
-rw-r--r-- | libgo/go/os/removeall_at.go | 3 | ||||
-rw-r--r-- | libgo/go/os/removeall_test.go | 30 |
2 files changed, 32 insertions, 1 deletions
diff --git a/libgo/go/os/removeall_at.go b/libgo/go/os/removeall_at.go index abdcb66..512a891 100644 --- a/libgo/go/os/removeall_at.go +++ b/libgo/go/os/removeall_at.go @@ -92,7 +92,8 @@ func removeAllFrom(parent *File, path string) error { if IsNotExist(err) { return nil } - return err + recurseErr = err + break } names, readErr := file.Readdirnames(request) diff --git a/libgo/go/os/removeall_test.go b/libgo/go/os/removeall_test.go index 9dab0d4..21371d8 100644 --- a/libgo/go/os/removeall_test.go +++ b/libgo/go/os/removeall_test.go @@ -372,3 +372,33 @@ func TestRemoveAllButReadOnly(t *testing.T) { } } } + +func TestRemoveUnreadableDir(t *testing.T) { + switch runtime.GOOS { + case "nacl", "js", "windows": + t.Skipf("skipping test on %s", runtime.GOOS) + } + + if Getuid() == 0 { + t.Skip("skipping test when running as root") + } + + t.Parallel() + + tempDir, err := ioutil.TempDir("", "TestRemoveAllButReadOnly-") + if err != nil { + t.Fatal(err) + } + defer RemoveAll(tempDir) + + target := filepath.Join(tempDir, "d0", "d1", "d2") + if err := MkdirAll(target, 0755); err != nil { + t.Fatal(err) + } + if err := Chmod(target, 0300); err != nil { + t.Fatal(err) + } + if err := RemoveAll(filepath.Join(tempDir, "d0")); err != nil { + t.Fatal(err) + } +} |