Integrate artifact locks into publish

This commit is contained in:
2026-09-05 13:04:08 +00:00
parent b74e31e1cc
commit 4bc33773fa
13 changed files with 503 additions and 376 deletions

View File

@@ -537,16 +537,20 @@ func TestExecuteStagesPublishSkipsRequiredUnselectedConfiguredOutput(t *testing.
t.Fatalf("Load manifest error = %v", err)
}
meta := loadedManifest.Stages["publish"].Metadata
skipped, ok := meta["skipped_unselected_outputs"].([]any)
if !ok || len(skipped) != 1 {
t.Fatalf("skipped_unselected_outputs = %#v, want one item", meta["skipped_unselected_outputs"])
}
item, ok := skipped[0].(map[string]any)
outcomes, ok := meta["publish_output_outcomes"].([]any)
if !ok {
t.Fatalf("skipped item = %#v, want object", skipped[0])
t.Fatalf("publish_output_outcomes = %#v, want array", meta["publish_output_outcomes"])
}
if item["source"] != "narratio.artifact.session_recap" || item["dest"] != "artifacts/session_recap.md" || item["required"] != true {
t.Fatalf("skipped item = %#v, want required session_recap published output", item)
var item map[string]any
for _, raw := range outcomes {
candidate, candidateOK := raw.(map[string]any)
if candidateOK && candidate["source"] == "narratio.artifact.session_recap" {
item = candidate
break
}
}
if item == nil || item["status"] != "unselected" || item["destination"] != "artifacts/session_recap.md" {
t.Fatalf("publish output outcome = %#v, want unselected session_recap", item)
}
}