mirror of
https://github.com/mikefarah/yq.git
synced 2026-07-03 19:05:38 +00:00
Nicer error message when trying to use merge anchor tags other than maps #1184
This commit is contained in:
parent
70ad7a35a8
commit
26529fae94
@ -309,6 +309,9 @@ func doTraverseMap(newMatches *orderedmap.OrderedMap, candidate *CandidateNode,
|
|||||||
func traverseMergeAnchor(newMatches *orderedmap.OrderedMap, originalCandidate *CandidateNode, value *yaml.Node, wantedKey string, prefs traversePreferences, splat bool) error {
|
func traverseMergeAnchor(newMatches *orderedmap.OrderedMap, originalCandidate *CandidateNode, value *yaml.Node, wantedKey string, prefs traversePreferences, splat bool) error {
|
||||||
switch value.Kind {
|
switch value.Kind {
|
||||||
case yaml.AliasNode:
|
case yaml.AliasNode:
|
||||||
|
if value.Alias.Kind != yaml.MappingNode {
|
||||||
|
return fmt.Errorf("can only use merge anchors with maps (!!map), but got %v", value.Alias.Tag)
|
||||||
|
}
|
||||||
candidateNode := originalCandidate.CreateReplacement(value.Alias)
|
candidateNode := originalCandidate.CreateReplacement(value.Alias)
|
||||||
return doTraverseMap(newMatches, candidateNode, wantedKey, prefs, splat)
|
return doTraverseMap(newMatches, candidateNode, wantedKey, prefs, splat)
|
||||||
case yaml.SequenceNode:
|
case yaml.SequenceNode:
|
||||||
|
|||||||
@ -26,6 +26,15 @@ foobar:
|
|||||||
thing: foobar_thing
|
thing: foobar_thing
|
||||||
`
|
`
|
||||||
|
|
||||||
|
// cannot use merge anchors with arrays
|
||||||
|
var badAliasSample = `
|
||||||
|
_common: &common-docker-file
|
||||||
|
- FROM ubuntu:18.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
<<: *common-docker-file
|
||||||
|
`
|
||||||
|
|
||||||
var traversePathOperatorScenarios = []expressionScenario{
|
var traversePathOperatorScenarios = []expressionScenario{
|
||||||
{
|
{
|
||||||
skipDoc: true,
|
skipDoc: true,
|
||||||
@ -529,6 +538,12 @@ var traversePathOperatorScenarios = []expressionScenario{
|
|||||||
"D0, P[a 2], (!!str)::c\n",
|
"D0, P[a 2], (!!str)::c\n",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
skipDoc: true,
|
||||||
|
document: badAliasSample,
|
||||||
|
expression: ".steps[]",
|
||||||
|
expectedError: "can only use merge anchors with maps (!!map), but got !!seq",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTraversePathOperatorScenarios(t *testing.T) {
|
func TestTraversePathOperatorScenarios(t *testing.T) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user