]> Cypherpunks repositories - gostls13.git/commitdiff
path.TestWalk: disable error case if root
authorRuss Cox <rsc@golang.org>
Fri, 13 Nov 2009 19:34:33 +0000 (11:34 -0800)
committerRuss Cox <rsc@golang.org>
Fri, 13 Nov 2009 19:34:33 +0000 (11:34 -0800)
(chmod 0 doesn't cause errors for root)

Fixes #22.

R=gri
https://golang.org/cl/152120

src/pkg/path/path_test.go

index b5cc33f18249f8bef071f01726fefd6a339c35c1..74520fa315fea655ed3fb067427457e7c30d7044 100644 (file)
@@ -233,31 +233,33 @@ func TestWalk(t *testing.T) {
        }
        checkMarks(t);
 
-       // introduce 2 errors: chmod top-level directories to 0
-       os.Chmod(Join(tree.name, tree.entries[1].name), 0);
-       os.Chmod(Join(tree.name, tree.entries[3].name), 0);
-       // mark respective subtrees manually
-       markTree(tree.entries[1]);
-       markTree(tree.entries[3]);
-       // correct double-marking of directory itself
-       tree.entries[1].mark--;
-       tree.entries[3].mark--;
-
-       // 3) handle errors, expect two
-       errors = make(chan os.Error, 64);
-       os.Chmod(Join(tree.name, tree.entries[1].name), 0);
-       Walk(tree.name, v, errors);
-       for i := 1; i <= 2; i++ {
-               if _, ok := <-errors; !ok {
-                       t.Errorf("%d. error expected, none found", i);
-                       break;
+       if os.Getuid() != 0 {
+               // introduce 2 errors: chmod top-level directories to 0
+               os.Chmod(Join(tree.name, tree.entries[1].name), 0);
+               os.Chmod(Join(tree.name, tree.entries[3].name), 0);
+               // mark respective subtrees manually
+               markTree(tree.entries[1]);
+               markTree(tree.entries[3]);
+               // correct double-marking of directory itself
+               tree.entries[1].mark--;
+               tree.entries[3].mark--;
+
+               // 3) handle errors, expect two
+               errors = make(chan os.Error, 64);
+               os.Chmod(Join(tree.name, tree.entries[1].name), 0);
+               Walk(tree.name, v, errors);
+               for i := 1; i <= 2; i++ {
+                       if _, ok := <-errors; !ok {
+                               t.Errorf("%d. error expected, none found", i);
+                               break;
+                       }
                }
+               if err, ok := <-errors; ok {
+                       t.Errorf("only two errors expected, found 3rd: %v", err)
+               }
+               // the inaccessible subtrees were marked manually
+               checkMarks(t);
        }
-       if err, ok := <-errors; ok {
-               t.Errorf("only two errors expected, found 3rd: %v", err)
-       }
-       // the inaccessible subtrees were marked manually
-       checkMarks(t);
 
        // cleanup
        os.Chmod(Join(tree.name, tree.entries[1].name), 0770);