Files
kitty/tools/utils/rmtree_test.go

53 lines
1.1 KiB
Go

package utils
import (
"os"
"path/filepath"
"testing"
)
func TestRemoveChildren(t *testing.T) {
tmpDir := t.TempDir()
// Create nested structure
subDir := filepath.Join(tmpDir, "subdir")
os.Mkdir(subDir, 0755)
os.WriteFile(filepath.Join(tmpDir, "file1.txt"), []byte("data"), 0644)
os.WriteFile(filepath.Join(subDir, "file2.txt"), []byte("data"), 0644)
d, err := os.Open(tmpDir)
if err != nil {
t.Fatal(err)
}
defer d.Close()
if err := RemoveChildren(d); err != nil {
t.Errorf("expected no error, got %v", err)
}
// Verify directory is empty
entries, _ := os.ReadDir(tmpDir)
if len(entries) != 0 {
t.Errorf("expected 0 entries, got %d", len(entries))
}
}
func TestRemoveChildren_FirstError(t *testing.T) {
tmpDir := t.TempDir()
// Create a read-only file to trigger an error on some systems
// (Note: Behavior varies by OS; this is a conceptual test for firstErr)
lockedFile := filepath.Join(tmpDir, "locked")
os.WriteFile(lockedFile, nil, 0000)
d, _ := os.Open(tmpDir)
defer d.Close()
err := RemoveChildren(d)
if err != nil {
if _, ok := err.(*os.PathError); !ok {
t.Errorf("expected *os.PathError, got %T", err)
}
}
}