Files
narratio/internal/artifacts/resolve_test.go

59 lines
1.8 KiB
Go

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))
}
}