Preserve null collections in effective YAML

This commit is contained in:
2026-09-07 12:03:45 +00:00
parent 47b3e5b55b
commit 3ec54b8c72
5 changed files with 170 additions and 12 deletions

View File

@@ -159,15 +159,44 @@ storage:
}
func TestEffectivePipelineValuesPreserveNilEmptyAndExactIntegers(t *testing.T) {
base := &PipelineConfig{Audita: AuditaConfig{Modules: nil}}
base := &PipelineConfig{
Audita: AuditaConfig{Modules: nil},
Scriptorium: &ScriptoriumConfig{Artifacts: nil},
resolution: &pipelineResolutionMetadata{},
}
nilValues, err := EffectivePipelineValues(base)
if err != nil {
t.Fatal(err)
}
nilYAML, err := MarshalEffectivePipeline(base)
if err != nil {
t.Fatal(err)
}
if !strings.Contains(string(nilYAML), "modules: null\n") || !strings.Contains(string(nilYAML), "artifacts: null\n") {
t.Fatalf("effective YAML lost null collections: %q", nilYAML)
}
if err := recomputePipelineEffectiveDigest(base); err != nil {
t.Fatal(err)
}
nilDigest := EffectivePipelineDigest(base)
base.Audita.Modules = []string{}
base.Scriptorium = &ScriptoriumConfig{Artifacts: map[string]ScriptoriumArtifactConfig{
base.Scriptorium.Artifacts = map[string]ScriptoriumArtifactConfig{}
emptyYAML, err := MarshalEffectivePipeline(base)
if err != nil {
t.Fatal(err)
}
if !strings.Contains(string(emptyYAML), "modules: []\n") || !strings.Contains(string(emptyYAML), "artifacts: {}\n") {
t.Fatalf("effective YAML lost empty collections: %q", emptyYAML)
}
if err := recomputePipelineEffectiveDigest(base); err != nil {
t.Fatal(err)
}
if emptyDigest := EffectivePipelineDigest(base); emptyDigest == nilDigest {
t.Fatalf("null and empty collections have equal digest %q", emptyDigest)
}
base.Scriptorium.Artifacts = map[string]ScriptoriumArtifactConfig{
"recap": {Vars: map[string]any{"exact": int64(9007199254740993)}},
}}
}
emptyValues, err := EffectivePipelineValues(base)
if err != nil {
t.Fatal(err)