1
0
mirror of https://github.com/golang/go synced 2024-11-13 18:30:26 -07:00

path.TestWalk: disable error case if root

(chmod 0 doesn't cause errors for root)

Fixes #22.

R=gri
https://golang.org/cl/152120
This commit is contained in:
Russ Cox 2009-11-13 11:34:33 -08:00
parent 87bc9b53fd
commit e7b8f5faca

View 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--;
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;
// 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);