Validate hidden base artifact ownership conflicts
This commit is contained in:
@@ -52,10 +52,10 @@ whisperx:
|
||||
|
||||
func TestPipelineConfigKitRejectsDuplicateBaseDeclarations(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
name, first, second string
|
||||
name, first, second, clearedContainer string
|
||||
}{
|
||||
{name: "artifact", first: "scriptorium:\n artifacts:\n recap:\n prompt_id: recap\n", second: "scriptorium:\n artifacts:\n recap:\n output_path: artifacts/recap.md\n"},
|
||||
{name: "artifact family", first: "scriptorium:\n artifact_families:\n recap:\n for_each: party.characters\n", second: "scriptorium:\n artifact_families:\n recap:\n output_path_pattern: artifacts/{character_id}.md\n"},
|
||||
{name: "artifact", first: "scriptorium:\n artifacts:\n recap:\n prompt_id: recap\n", second: "scriptorium:\n artifacts:\n recap:\n output_path: artifacts/recap.md\n", clearedContainer: "scriptorium:\n artifacts: null\n"},
|
||||
{name: "artifact family", first: "scriptorium:\n artifact_families:\n recap:\n for_each: party.characters\n", second: "scriptorium:\n artifact_families:\n recap:\n output_path_pattern: artifacts/{character_id}.md\n", clearedContainer: "scriptorium:\n artifact_families: null\n"},
|
||||
} {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
@@ -68,16 +68,46 @@ whisperx:
|
||||
`)
|
||||
writePipelineFixture(t, dir, "first.yml", test.first)
|
||||
writePipelineFixture(t, dir, "second.yml", test.second)
|
||||
writePipelineFixture(t, dir, "profiles/clear-container.yml", test.clearedContainer)
|
||||
writePipelineFixture(t, dir, "profiles/clear-scriptorium.yml", "scriptorium: null\n")
|
||||
|
||||
_, err := LoadPipeline(filepath.Join(dir, "pipeline.yml"))
|
||||
if err == nil || !strings.Contains(err.Error(), "declared by multiple base files") ||
|
||||
!strings.Contains(err.Error(), "first.yml") || !strings.Contains(err.Error(), "second.yml") {
|
||||
t.Fatalf("duplicate declaration error = %v", err)
|
||||
for _, profile := range []string{"", "clear-container", "clear-scriptorium"} {
|
||||
t.Run(profile, func(t *testing.T) {
|
||||
options := PipelineLoadOptions{}
|
||||
if profile != "" {
|
||||
options.Profile = &profile
|
||||
}
|
||||
_, err := LoadPipelineWithOptions(filepath.Join(dir, "pipeline.yml"), options)
|
||||
if err == nil || !strings.Contains(err.Error(), "declared by multiple base files") ||
|
||||
!strings.Contains(err.Error(), "first.yml") || !strings.Contains(err.Error(), "second.yml") {
|
||||
t.Fatalf("duplicate declaration error = %v", err)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestPipelineConfigKitAllowsOneBaseDeclarationWithProfileOverride(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
writePipelineFixture(t, dir, "pipeline.yml", `configkit:
|
||||
imports:
|
||||
- path: artifact.yml
|
||||
whisperx:
|
||||
transcribe_url: https://transcription.example.test/transcribe
|
||||
`)
|
||||
writePipelineFixture(t, dir, "artifact.yml", "scriptorium:\n artifacts:\n recap:\n prompt_id: base\n output_path: artifacts/recap.md\n")
|
||||
writePipelineFixture(t, dir, "profiles/testing.yml", "scriptorium:\n artifacts:\n recap:\n prompt_id: testing\n")
|
||||
profile := "testing"
|
||||
cfg, err := LoadPipelineWithOptions(filepath.Join(dir, "pipeline.yml"), PipelineLoadOptions{Profile: &profile})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got := cfg.Scriptorium.Artifacts["recap"].PromptID; got != "testing" {
|
||||
t.Fatalf("profile prompt = %q, want testing", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPipelineConfigKitRejectsUnknownDirectiveAlias(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
path := writePipelineFixture(t, dir, "pipeline.yml", "composition:\n imports: []\n")
|
||||
|
||||
Reference in New Issue
Block a user