mirror of
https://github.com/mikefarah/yq.git
synced 2026-07-07 22:35:37 +00:00
fix(has): return false for negative array indices
The sequence branch only checked the upper bound (len > index), so has(-1) returned true even on an empty array. Guard index >= 0.
This commit is contained in:
parent
e2f1d5ccf7
commit
90a55f7962
@ -44,7 +44,7 @@ func hasOperator(d *dataTreeNavigator, context Context, expressionNode *Expressi
|
||||
if errParsingInt != nil {
|
||||
return Context{}, errParsingInt
|
||||
}
|
||||
candidateHasKey = int64(len(contents)) > number
|
||||
candidateHasKey = number >= 0 && int64(len(contents)) > number
|
||||
}
|
||||
results.PushBack(createBooleanCandidate(candidate, candidateHasKey))
|
||||
default:
|
||||
|
||||
@ -71,6 +71,16 @@ var hasOperatorScenarios = []expressionScenario{
|
||||
"D0, P[4], (!!bool)::true\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
skipDoc: true,
|
||||
description: "Negative array index is never present",
|
||||
document: "[[1, 2, 3], []]",
|
||||
expression: `.[] | has(-1)`,
|
||||
expected: []string{
|
||||
"D0, P[0], (!!bool)::false\n",
|
||||
"D0, P[1], (!!bool)::false\n",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
func TestHasOperatorScenarios(t *testing.T) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user