aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/os
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2019-03-18 20:27:59 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2019-03-18 20:27:59 +0000
commita8b58d84bf4fd9c925a835ba39c1c552383bc61b (patch)
tree97d68e0e70fb780b04f3171a0f53102a39c23f41 /libgo/go/os
parent891cd9e3b9a89b0461fb838d38c51b6fab596337 (diff)
downloadgcc-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.go3
-rw-r--r--libgo/go/os/removeall_test.go30
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)
+ }
+}