Implement prepare stage input resolution

This commit is contained in:
2026-05-02 11:26:43 -05:00
parent 2854da48c2
commit 1f9d8d0ef7
6 changed files with 602 additions and 8 deletions

View File

@@ -172,6 +172,11 @@ inputs:
t.Fatalf("write session config: %v", err)
}
mustWriteTestFile(t, filepath.Join(dir, "speakers.yml"), "alice: alice.flac\n")
mustWriteTestFile(t, filepath.Join(dir, "autocorrect.yml"), "[]\n")
mustWriteTestFile(t, filepath.Join(dir, "glossary.yml"), "[]\n")
mustWriteTestFile(t, filepath.Join(dir, "audio", "alice.flac"), "audio-bytes")
return pipelinePath, sessionPath
}
@@ -189,3 +194,13 @@ func writeManifestPathForExecute(t *testing.T) string {
return path
}
func mustWriteTestFile(t *testing.T, path, contents string) {
t.Helper()
if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
t.Fatalf("mkdir %q: %v", path, err)
}
if err := os.WriteFile(path, []byte(contents), 0o644); err != nil {
t.Fatalf("write %q: %v", path, err)
}
}

View File

@@ -57,10 +57,19 @@ func TestExecuteStagesPlaceholderSuccessUpdatesManifest(t *testing.T) {
if sr.Status != manifest.StatusSucceeded {
t.Fatalf("stage %q status = %q, want %q", name, sr.Status, manifest.StatusSucceeded)
}
if name == "prepare" {
if sr.Metadata == nil || sr.Metadata["prepared"] != true {
t.Fatalf("prepare metadata missing prepared=true: %#v", sr.Metadata)
}
continue
}
if sr.Metadata == nil || sr.Metadata["placeholder"] != true {
t.Fatalf("stage %q missing placeholder metadata", name)
}
}
if len(m.Inputs) == 0 {
t.Fatalf("manifest inputs should be recorded by prepare")
}
if _, err := os.Stat(summary.ManifestPath); err != nil {
t.Fatalf("manifest file missing at %q: %v", summary.ManifestPath, err)
@@ -186,8 +195,21 @@ func testConfig(t *testing.T) *config.Config {
t.Helper()
workspace := t.TempDir()
cfgDir := t.TempDir()
sessionPath := filepath.Join(cfgDir, "session.yml")
pipelinePath := filepath.Join(cfgDir, "pipeline.yml")
mustWriteFile(t, pipelinePath, "workspace:\n root: "+workspace+"\n")
mustWriteFile(t, sessionPath, "session_id: 2026-05-03\n")
mustWriteFile(t, filepath.Join(cfgDir, "speakers.yml"), "alice: alice.flac\n")
mustWriteFile(t, filepath.Join(cfgDir, "autocorrect.yml"), "[]\n")
mustWriteFile(t, filepath.Join(cfgDir, "glossary.yml"), "[]\n")
mustWriteFile(t, filepath.Join(cfgDir, "audio", "alice.flac"), "audio")
return &config.Config{
Pipeline: &config.PipelineConfig{Workspace: config.WorkspaceConfig{Root: workspace}},
Pipeline: &config.PipelineConfig{Workspace: config.WorkspaceConfig{Root: workspace}},
PipelinePath: pipelinePath,
SessionPath: sessionPath,
Session: &config.SessionConfig{
SessionID: "2026-05-03",
Inputs: config.SessionInputsConfig{
@@ -199,3 +221,13 @@ func testConfig(t *testing.T) *config.Config {
},
}
}
func mustWriteFile(t *testing.T, path, contents string) {
t.Helper()
if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
t.Fatalf("MkdirAll(%q): %v", path, err)
}
if err := os.WriteFile(path, []byte(contents), 0o644); err != nil {
t.Fatalf("WriteFile(%q): %v", path, err)
}
}