mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-09-15 12:18:57 +00:00
Merge pull request #6223 from iahsanGill/codex/fix-integer-key-json
fix: support integer keys when marshaling resources to JSON
This commit is contained in:
@@ -9,6 +9,31 @@ import (
|
|||||||
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
|
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestIntegerKey(t *testing.T) {
|
||||||
|
th := kusttest_test.MakeHarness(t)
|
||||||
|
th.WriteK(".", `
|
||||||
|
resources:
|
||||||
|
- cm.yaml
|
||||||
|
`)
|
||||||
|
th.WriteF("cm.yaml", `
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: cm
|
||||||
|
data:
|
||||||
|
123: abc
|
||||||
|
`)
|
||||||
|
m := th.Run(".", th.MakeDefaultOptions())
|
||||||
|
th.AssertActualEqualsExpected(m, `
|
||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
"123": abc
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: cm
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
|
||||||
// Numbers and booleans are quoted
|
// Numbers and booleans are quoted
|
||||||
func TestGeneratorIntVsStringNoMerge(t *testing.T) {
|
func TestGeneratorIntVsStringNoMerge(t *testing.T) {
|
||||||
th := kusttest_test.MakeHarness(t)
|
th := kusttest_test.MakeHarness(t)
|
||||||
|
|||||||
@@ -43,5 +43,5 @@ spec:
|
|||||||
m := th.Run(".", th.MakeDefaultOptions())
|
m := th.Run(".", th.MakeDefaultOptions())
|
||||||
_, err := m.AsYaml()
|
_, err := m.AsYaml()
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.Contains(t, err.Error(), "mapping key \"env\" already defined")
|
assert.Contains(t, err.Error(), "key \"env\" already set in map")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import (
|
|||||||
"sigs.k8s.io/kustomize/kyaml/sliceutil"
|
"sigs.k8s.io/kustomize/kyaml/sliceutil"
|
||||||
"sigs.k8s.io/kustomize/kyaml/utils"
|
"sigs.k8s.io/kustomize/kyaml/utils"
|
||||||
"sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/labels"
|
"sigs.k8s.io/kustomize/kyaml/yaml/internal/k8sgen/pkg/labels"
|
||||||
|
k8syaml "sigs.k8s.io/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
// MakeNullNode returns an RNode that represents an empty document.
|
// MakeNullNode returns an RNode that represents an empty document.
|
||||||
@@ -983,20 +984,11 @@ func (rn *RNode) MarshalJSON() ([]byte, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if yNode.Kind == SequenceNode {
|
b, err := k8syaml.YAMLToJSONStrict([]byte(s))
|
||||||
var a []interface{}
|
if err != nil {
|
||||||
if err := Unmarshal([]byte(s), &a); err != nil {
|
return nil, errors.Wrap(err)
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return json.Marshal(a)
|
|
||||||
}
|
}
|
||||||
|
return b, nil
|
||||||
m := map[string]interface{}{}
|
|
||||||
if err := Unmarshal([]byte(s), &m); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return json.Marshal(m)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnmarshalJSON overwrites this RNode with data from []byte.
|
// UnmarshalJSON overwrites this RNode with data from []byte.
|
||||||
|
|||||||
Reference in New Issue
Block a user