Fixed a path-duplication bug and added regression coverage
This commit is contained in:
58
internal/artifacts/resolve_test.go
Normal file
58
internal/artifacts/resolve_test.go
Normal file
@@ -0,0 +1,58 @@
|
||||
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))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user