Expand family publish policies into concrete rules

This commit is contained in:
2026-08-30 14:30:07 +00:00
parent c91599ef36
commit b5b1d22011
8 changed files with 100 additions and 3 deletions

View File

@@ -297,6 +297,35 @@ func TestArtifactFamiliesRejectInvalidMemberDependenciesAndSources(t *testing.T)
}
}
func TestFamilyPublishRulesExpandToConcreteArtifacts(t *testing.T) {
required := true
cfg := &PipelineConfig{
Scriptorium: &ScriptoriumConfig{Artifacts: map[string]ScriptoriumArtifactConfig{
"character_meta_alpha": {OutputPath: "artifacts/characters/alpha/meta.md"},
"character_meta_zeta": {OutputPath: "artifacts/characters/zeta/meta.md"},
}},
Publish: &PublishConfig{},
resolution: &pipelineResolutionMetadata{publishDeclared: true},
}
catalog := ArtifactFamilyCatalog{Families: map[string]ArtifactFamilyOrigin{
"character_meta": {Members: []string{"character_meta_alpha", "character_meta_zeta"}, Publish: &ScriptoriumArtifactFamilyPublishConfig{Enabled: true, Required: required, DestPattern: "published/{character_id}.md"}},
}, Members: map[string]ArtifactFamilyMemberOrigin{
"character_meta_alpha": {CharacterID: "alpha"}, "character_meta_zeta": {CharacterID: "zeta"},
}}
if err := expandFamilyPublishRules(cfg, catalog); err != nil {
t.Fatal(err)
}
if got := cfg.Publish.Outputs; len(got) != 2 || got[0].Source != "narratio.artifact.character_meta_alpha" || got[0].Dest != "published/alpha.md" || got[0].Required == nil || !*got[0].Required {
t.Fatalf("generated publish rules = %#v", got)
}
cfg.Publish.Outputs = nil
catalog.Families["character_meta"] = ArtifactFamilyOrigin{Members: []string{"character_meta_alpha"}, Publish: &ScriptoriumArtifactFamilyPublishConfig{Enabled: true}}
cfg.resolution.publishDeclared = false
if err := expandFamilyPublishRules(cfg, catalog); err == nil || !strings.Contains(err.Error(), "requires pipeline.publish") {
t.Fatalf("missing publish error = %v", err)
}
}
const validFamilyYAML = `
character_meta:
enabled: true