Skip to content

Commit 6f05a99

Browse files
authored
Fix error when decoding null values using manifest_decode() (#2461)
1 parent c055be2 commit 6f05a99

File tree

5 files changed

+11
-0
lines changed

5 files changed

+11
-0
lines changed

.changelog/2461.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
`manifest_decode()`: fix handling of manifests containing null values
3+
```

internal/framework/provider/functions/decode.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ func decodeSequence(ctx context.Context, s []any) (attr.Value, diag.Diagnostics)
8787

8888
func decodeScalar(ctx context.Context, m any) (value attr.Value, diags diag.Diagnostics) {
8989
switch v := m.(type) {
90+
case nil:
91+
value = types.DynamicNull()
9092
case float64:
9193
value = types.NumberValue(big.NewFloat(float64(v)))
9294
case bool:

internal/framework/provider/functions/manifest_decode_multi_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,13 @@ func TestManifestDecodeMulti(t *testing.T) {
3535
}),
3636
"kind": knownvalue.StringExact("ConfigMap"),
3737
"metadata": knownvalue.ObjectExact(map[string]knownvalue.Check{
38+
"annotations": knownvalue.Null(),
3839
"labels": knownvalue.ObjectExact(map[string]knownvalue.Check{
3940
"test": knownvalue.StringExact("test---label"),
4041
}),
4142
"name": knownvalue.StringExact("test-configmap"),
4243
}),
44+
"status": knownvalue.Null(),
4345
}),
4446
})),
4547
},

internal/framework/provider/functions/manifest_decode_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,13 @@ func TestManifestDecode(t *testing.T) {
3333
}),
3434
"kind": knownvalue.StringExact("ConfigMap"),
3535
"metadata": knownvalue.ObjectExact(map[string]knownvalue.Check{
36+
"annotations": knownvalue.Null(),
3637
"labels": knownvalue.ObjectExact(map[string]knownvalue.Check{
3738
"test": knownvalue.StringExact("test---label"),
3839
}),
3940
"name": knownvalue.StringExact("test-configmap"),
4041
}),
42+
"status": knownvalue.Null(),
4143
})),
4244
},
4345
},

internal/framework/provider/functions/testdata/decode_single.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ apiVersion: v1
66
kind: ConfigMap
77
metadata:
88
name: test-configmap
9+
annotations: null
910
labels:
1011
test: "test---label"
1112
data:
1213
configfile: |
1314
---
1415
test: document
16+
status:

0 commit comments

Comments
 (0)