mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-11 17:12:51 +00:00
Add RNode.Map method and test to help decoding.
This commit is contained in:
@@ -8,6 +8,7 @@ require (
|
|||||||
github.com/go-openapi/spec v0.19.5
|
github.com/go-openapi/spec v0.19.5
|
||||||
github.com/go-openapi/strfmt v0.19.5
|
github.com/go-openapi/strfmt v0.19.5
|
||||||
github.com/go-openapi/validate v0.19.8
|
github.com/go-openapi/validate v0.19.8
|
||||||
|
github.com/google/go-cmp v0.3.0
|
||||||
github.com/markbates/pkger v0.17.1
|
github.com/markbates/pkger v0.17.1
|
||||||
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00
|
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00
|
||||||
github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d
|
github.com/qri-io/starlib v0.4.2-0.20200213133954-ff2e8cd5ef8d
|
||||||
|
|||||||
@@ -785,6 +785,19 @@ func FromMap(m map[string]interface{}) (*RNode, error) {
|
|||||||
return Parse(string(c))
|
return Parse(string(c))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rn *RNode) Map() map[string]interface{} {
|
||||||
|
if rn == nil || rn.value == nil {
|
||||||
|
return make(map[string]interface{})
|
||||||
|
}
|
||||||
|
var result map[string]interface{}
|
||||||
|
if err := rn.value.Decode(&result); err != nil {
|
||||||
|
// Should not be able to create an RNode that cannot be decoded;
|
||||||
|
// this is an unrecoverable error.
|
||||||
|
log.Fatalf("failed to decode ynode: %v", err)
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
// ConvertJSONToYamlNode parses input json string and returns equivalent yaml node
|
// ConvertJSONToYamlNode parses input json string and returns equivalent yaml node
|
||||||
func ConvertJSONToYamlNode(jsonStr string) (*RNode, error) {
|
func ConvertJSONToYamlNode(jsonStr string) (*RNode, error) {
|
||||||
var body map[string]interface{}
|
var body map[string]interface{}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/google/go-cmp/cmp"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -384,6 +385,38 @@ func TestRNodeGetValidatedMetadata(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestRNodeMapEmpty(t *testing.T) {
|
||||||
|
assert.Equal(t, 0, len(NewRNode(nil).Map()))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestRNodeMap(t *testing.T) {
|
||||||
|
wn := NewRNode(nil)
|
||||||
|
if err := wn.UnmarshalJSON([]byte(`{
|
||||||
|
"apiVersion": "apps/v1",
|
||||||
|
"kind": "Deployment",
|
||||||
|
"metadata": {
|
||||||
|
"name": "homer",
|
||||||
|
"namespace": "simpsons"
|
||||||
|
}
|
||||||
|
}`)); err != nil {
|
||||||
|
t.Fatalf("unexpected unmarshaljson err: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
expected := map[string]interface{}{
|
||||||
|
"apiVersion": "apps/v1",
|
||||||
|
"kind": "Deployment",
|
||||||
|
"metadata": map[string]interface{}{
|
||||||
|
"name": "homer",
|
||||||
|
"namespace": "simpsons",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
actual := wn.Map()
|
||||||
|
if diff := cmp.Diff(expected, actual); diff != "" {
|
||||||
|
t.Fatalf("actual map does not deep equal expected map:\n%v", diff)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestRNodeFromMap(t *testing.T) {
|
func TestRNodeFromMap(t *testing.T) {
|
||||||
testConfigMap := map[string]interface{}{
|
testConfigMap := map[string]interface{}{
|
||||||
"apiVersion": "v1",
|
"apiVersion": "v1",
|
||||||
|
|||||||
Reference in New Issue
Block a user