Skip to content

Commit e7b8f5f

Browse files
committed
path.TestWalk: disable error case if root
(chmod 0 doesn't cause errors for root) Fixes #22. R=gri https://golang.org/cl/152120
1 parent 87bc9b5 commit e7b8f5f

File tree

1 file changed

+25
-23
lines changed

1 file changed

+25
-23
lines changed

src/pkg/path/path_test.go

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -233,31 +233,33 @@ func TestWalk(t *testing.T) {
233233
}
234234
checkMarks(t);
235235

236-
// introduce 2 errors: chmod top-level directories to 0
237-
os.Chmod(Join(tree.name, tree.entries[1].name), 0);
238-
os.Chmod(Join(tree.name, tree.entries[3].name), 0);
239-
// mark respective subtrees manually
240-
markTree(tree.entries[1]);
241-
markTree(tree.entries[3]);
242-
// correct double-marking of directory itself
243-
tree.entries[1].mark--;
244-
tree.entries[3].mark--;
245-
246-
// 3) handle errors, expect two
247-
errors = make(chan os.Error, 64);
248-
os.Chmod(Join(tree.name, tree.entries[1].name), 0);
249-
Walk(tree.name, v, errors);
250-
for i := 1; i <= 2; i++ {
251-
if _, ok := <-errors; !ok {
252-
t.Errorf("%d. error expected, none found", i);
253-
break;
236+
if os.Getuid() != 0 {
237+
// introduce 2 errors: chmod top-level directories to 0
238+
os.Chmod(Join(tree.name, tree.entries[1].name), 0);
239+
os.Chmod(Join(tree.name, tree.entries[3].name), 0);
240+
// mark respective subtrees manually
241+
markTree(tree.entries[1]);
242+
markTree(tree.entries[3]);
243+
// correct double-marking of directory itself
244+
tree.entries[1].mark--;
245+
tree.entries[3].mark--;
246+
247+
// 3) handle errors, expect two
248+
errors = make(chan os.Error, 64);
249+
os.Chmod(Join(tree.name, tree.entries[1].name), 0);
250+
Walk(tree.name, v, errors);
251+
for i := 1; i <= 2; i++ {
252+
if _, ok := <-errors; !ok {
253+
t.Errorf("%d. error expected, none found", i);
254+
break;
255+
}
254256
}
257+
if err, ok := <-errors; ok {
258+
t.Errorf("only two errors expected, found 3rd: %v", err)
259+
}
260+
// the inaccessible subtrees were marked manually
261+
checkMarks(t);
255262
}
256-
if err, ok := <-errors; ok {
257-
t.Errorf("only two errors expected, found 3rd: %v", err)
258-
}
259-
// the inaccessible subtrees were marked manually
260-
checkMarks(t);
261263

262264
// cleanup
263265
os.Chmod(Join(tree.name, tree.entries[1].name), 0770);

0 commit comments

Comments
 (0)