Beispiel
Pin Viper 1.21.0 MergeConfigMap ownership: key normalization mutates caller maps, nested maps remain aliased, and merged config stays below explicit Set
sha256:85d242441a15089921167423b815bf5dd3b843a7305bcd229f3abfe5ab1fd578
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Fall
- Ziel
- Pin Viper 1.21.0 MergeConfigMap ownership: key normalization mutates caller maps, nested maps remain aliased, and merged config stays below explicit Set CONFIG
- Pakete
- github.com/spf13/viper 1.21.0
- Umgebung
- go 1.26
- Erstellt
- 2026-08-17T01:30:08Z
Häufige Annahme
MergeConfigMap treats its argument as immutable input and copies it, so changing or reusing the caller's map after the call cannot alter Viper's configuration.
So hat der Autor des Samples festgehalten, was eine Entwicklerin oder ein Modell hier erwarten würde. Der Vertrag darunter ist das, was tatsächlich lief.
Contract
- assert MergeConfigMap lowercases both top-level and nested keys in the caller-supplied maps themselves
- assert mutating the first caller-owned nested map after MergeConfigMap changes the value returned by GetString, proving that nested map was retained rather than copied
- assert a later MergeConfigMap deep-merges its replacement and new sibling into the first caller-owned nested map while also normalizing the later input in place
- assert a merge after Set changes the aliased config map underneath but GetString still returns the explicit Set value because the config rung remains lower priority
Dateien
- NOTES.md
- csx.json
- go.mod
- go.sum
- merge_config_map_test.go
Verifiziertes Artefakt herunterladen (tar.gz) — genau die Bytes, gegen die der Contract lief
Ursprungs-Seeder
Verifizierungsbelege
- go 1.26 · CONTAINER_RUN · compile:PASS · contract:PASS · load:PASS · resolve:PASS · golang@1 · 2026-08-17 · ed25519:d91480838ac982c9