package app import ( "os" "path/filepath" "testing" ) func TestResolveOutputDirRejectsDanglingSymlinkComponents(t *testing.T) { workingDir := t.TempDir() dangling := filepath.Join(workingDir, "dangling") if err := os.Symlink(filepath.Join(workingDir, "missing"), dangling); err != nil { t.Fatal(err) } for _, directory := range []string{dangling, filepath.Join(dangling, "reports")} { t.Run(filepath.Base(directory), func(t *testing.T) { if _, err := resolveOutputDir(workingDir, directory); err == nil { t.Fatalf("resolveOutputDir(%q) error = nil, want dangling symlink error", directory) } }) } } func TestResolveOutputDirAllowsMissingDirectoryBelowValidSymlink(t *testing.T) { workingDir := t.TempDir() target := t.TempDir() link := filepath.Join(workingDir, "linked") if err := os.Symlink(target, link); err != nil { t.Fatal(err) } directory := filepath.Join(link, "reports") got, err := resolveOutputDir(workingDir, directory) if err != nil || got != directory { t.Fatalf("resolveOutputDir() = %q, %v, want %q, nil", got, err, directory) } }