package artifacts import ( "os" "path/filepath" "testing" ) func TestResolveSessionLocalPathForRead(t *testing.T) { workspace := t.TempDir() paths := buildSessionPaths(workspace, "s-1") if err := os.MkdirAll(paths.TranscriptsRawDir, 0o755); err != nil { t.Fatalf("MkdirAll() error = %v", err) } target := filepath.Join(paths.TranscriptsRawDir, "alice.json") if err := os.WriteFile(target, []byte(`{"segments":[]}`), 0o644); err != nil { t.Fatalf("WriteFile() error = %v", err) } abs := target got := ResolveSessionLocalPathForRead(paths, abs) if got != abs { t.Fatalf("absolute path resolution = %q, want %q", got, abs) } sessionRelative := filepath.Join("transcripts", "raw", "alice.json") got = ResolveSessionLocalPathForRead(paths, sessionRelative) if got != target { t.Fatalf("session-relative resolution = %q, want %q", got, target) } } func TestResolveSessionLocalPathForReadRelativeWorkspaceRootQualifiedPath(t *testing.T) { cwd, err := os.Getwd() if err != nil { t.Fatalf("Getwd() error = %v", err) } workspaceAbs := t.TempDir() workspaceRel, err := filepath.Rel(cwd, workspaceAbs) if err != nil { t.Fatalf("Rel() error = %v", err) } paths := buildSessionPaths(workspaceRel, "s-1") target := filepath.Join(paths.TranscriptsRawDir, "alice.json") if err := os.MkdirAll(filepath.Dir(target), 0o755); err != nil { t.Fatalf("MkdirAll() error = %v", err) } if err := os.WriteFile(target, []byte(`{"segments":[]}`), 0o644); err != nil { t.Fatalf("WriteFile() error = %v", err) } manifestPath := filepath.Join(workspaceRel, "work", "s-1", "transcripts", "raw", "alice.json") got := ResolveSessionLocalPathForRead(paths, manifestPath) if got != filepath.Clean(manifestPath) { t.Fatalf("resolution = %q, want %q", got, filepath.Clean(manifestPath)) } }