diff --git a/cmd/read_test.go b/cmd/read_test.go index 2dd436b..96d4121 100644 --- a/cmd/read_test.go +++ b/cmd/read_test.go @@ -617,6 +617,23 @@ pointer: *value-pointer` test.AssertResult(t, expectedOutput, result.Output) } +func TestReadMergeAnchorsExplodeKeyCmd(t *testing.T) { + content := `name: &nameField Mike +*nameField: Great Guy` + filename := test.WriteTempYamlFile(content) + defer test.RemoveTempYamlFile(filename) + + cmd := getRootCommand() + result := test.RunCmd(cmd, fmt.Sprintf("read -X %s", filename)) + if result.Error != nil { + t.Error(result.Error) + } + expectedOutput := `name: Mike +Mike: Great Guy +` + test.AssertResult(t, expectedOutput, result.Output) +} + func TestReadMergeAnchorsExplodeSimpleArrayCmd(t *testing.T) { content := `- things` filename := test.WriteTempYamlFile(content) diff --git a/cmd/utils.go b/cmd/utils.go index cc79594..cfc006b 100644 --- a/cmd/utils.go +++ b/cmd/utils.go @@ -202,6 +202,10 @@ func explodeNode(node *yaml.Node) error { if errorInContent != nil { return errorInContent } + errorInContent = explodeNode(keyNode) + if errorInContent != nil { + return errorInContent + } } else { if valueNode.Kind == yaml.SequenceNode { log.Debugf("an alias merge list!")