Simplify root-scoped cleanup
This commit is contained in:
@@ -38,6 +38,9 @@ func TestRemoveAllUnderRootRejectsUnsafeTargets(t *testing.T) {
|
||||
if err := RemoveAllUnderRoot(root, filepath.Join(outside, "target")); err == nil {
|
||||
t.Fatal("RemoveAllUnderRoot(outside) error = nil, want outside-root rejection")
|
||||
}
|
||||
if err := RemoveAllUnderRoot(root, filepath.Join(root, "runs", "..")); err == nil {
|
||||
t.Fatal("RemoveAllUnderRoot(root relative traversal) error = nil, want root rejection")
|
||||
}
|
||||
if err := os.Symlink(outside, filepath.Join(root, "runs")); err == nil {
|
||||
t.Fatal("Symlink() error = nil, want collision because runs already exists")
|
||||
}
|
||||
@@ -48,7 +51,7 @@ func TestRemoveAllUnderRootRejectsUnsafeTargets(t *testing.T) {
|
||||
t.Fatalf("Symlink() error = %v", err)
|
||||
}
|
||||
if err := RemoveAllUnderRoot(root, target); err == nil {
|
||||
t.Fatal("RemoveAllUnderRoot(symlinked ancestor) error = nil, want rejection")
|
||||
t.Fatal("RemoveAllUnderRoot(symlinked ancestor) error = nil, want root confinement error")
|
||||
}
|
||||
data, err := os.ReadFile(sentinel)
|
||||
if err != nil {
|
||||
@@ -59,7 +62,7 @@ func TestRemoveAllUnderRootRejectsUnsafeTargets(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRemoveAllUnderRootRejectsSymlinkInTree(t *testing.T) {
|
||||
func TestRemoveAllUnderRootRemovesRootContainedSymlink(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
outside := t.TempDir()
|
||||
target := filepath.Join(root, "runs", "run-1")
|
||||
@@ -72,12 +75,15 @@ func TestRemoveAllUnderRootRejectsSymlinkInTree(t *testing.T) {
|
||||
t.Fatalf("Symlink() error = %v", err)
|
||||
}
|
||||
|
||||
if err := RemoveAllUnderRoot(root, target); err == nil {
|
||||
t.Fatal("RemoveAllUnderRoot() error = nil, want symlink rejection")
|
||||
if err := RemoveAllUnderRoot(root, target); err != nil {
|
||||
t.Fatalf("RemoveAllUnderRoot() error = %v", err)
|
||||
}
|
||||
if _, err := os.Stat(sentinel); err != nil {
|
||||
t.Fatalf("outside sentinel was changed: %v", err)
|
||||
}
|
||||
if _, err := os.Lstat(target); !errors.Is(err, os.ErrNotExist) {
|
||||
t.Fatalf("Lstat(%q) error = %v, want not exist", target, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRemoveFileUnderRootRemovesOnlyRegularFile(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user