Fix wrong runtime type error message in count, object.filter, object.remove (#4768)

Fixes #4767

Signed-off-by: Anders Eknert <anders@eknert.com>
This commit is contained in:
Anders Eknert
2022-06-10 13:00:58 +02:00
committed by GitHub
parent f2fd8f5e91
commit 50b79b9b00
11 changed files with 39 additions and 19 deletions
@@ -0,0 +1,29 @@
cases:
- modules:
- |
package generated
p = x {
count(input.foo, x)
}
note: aggregates/count error null
query: data.generated.p = x
input:
foo: null
strict_error: true
want_error_code: eval_type_error
want_error: 'operand 1 must be one of {array, object, set, string} but got null'
- modules:
- |
package generated
p = x {
count(input.foo, x)
}
note: aggregates/count error number
query: data.generated.p = x
input:
foo: 5
strict_error: true
want_error_code: eval_type_error
want_error: 'operand 1 must be one of {array, object, set, string} but got number'
@@ -12,7 +12,6 @@ cases:
}
note: objectfilter/error invalid key param type string input
query: data.generated.p = x
want_error: 'object.filter: operand 2 must be one of {object, string, array} but
got string'
want_error: 'object.filter: operand 2 must be one of {object, set, array} but got string'
want_error_code: eval_type_error
strict_error: true
@@ -12,7 +12,6 @@ cases:
}
note: objectfilter/error invalid key param type boolean input
query: data.generated.p = x
want_error: 'object.filter: operand 2 must be one of {object, string, array} but
got boolean'
want_error: 'object.filter: operand 2 must be one of {object, set, array} but got boolean'
want_error_code: eval_type_error
strict_error: true
@@ -12,7 +12,6 @@ cases:
}
note: objectfilter/error invalid key param type number input
query: data.generated.p = x
want_error: 'object.filter: operand 2 must be one of {object, string, array} but
got number'
want_error: 'object.filter: operand 2 must be one of {object, set, array} but got number'
want_error_code: eval_type_error
strict_error: true
@@ -12,7 +12,6 @@ cases:
}
note: objectfilter/error invalid key param type nil input
query: data.generated.p = x
want_error: 'object.filter: operand 2 must be one of {object, string, array} but
got null'
want_error: 'object.filter: operand 2 must be one of {object, set, array} but got null'
want_error_code: eval_type_error
strict_error: true
@@ -12,7 +12,6 @@ cases:
}
note: objectremove/error invalid key param type string input
query: data.generated.p = x
want_error: 'object.remove: operand 2 must be one of {object, string, array} but
got string'
want_error: 'object.remove: operand 2 must be one of {object, set, array} but got string'
want_error_code: eval_type_error
strict_error: true
@@ -12,7 +12,6 @@ cases:
}
note: objectremove/error invalid key param type boolean input
query: data.generated.p = x
want_error: 'object.remove: operand 2 must be one of {object, string, array} but
got boolean'
want_error: 'object.remove: operand 2 must be one of {object, set, array} but got boolean'
want_error_code: eval_type_error
strict_error: true
@@ -12,7 +12,6 @@ cases:
}
note: objectremove/error invalid key param type number input
query: data.generated.p = x
want_error: 'object.remove: operand 2 must be one of {object, string, array} but
got number'
want_error: 'object.remove: operand 2 must be one of {object, set, array} but got number'
want_error_code: eval_type_error
strict_error: true
@@ -12,7 +12,6 @@ cases:
}
note: objectremove/error invalid key param type nil input
query: data.generated.p = x
want_error: 'object.remove: operand 2 must be one of {object, string, array} but
got null'
want_error: 'object.remove: operand 2 must be one of {object, set, array} but got null'
want_error_code: eval_type_error
strict_error: true
+1 -1
View File
@@ -22,7 +22,7 @@ func builtinCount(a ast.Value) (ast.Value, error) {
case ast.String:
return ast.IntNumberTerm(len([]rune(a))).Value, nil
}
return nil, builtins.NewOperandTypeErr(1, a, "array", "object", "set")
return nil, builtins.NewOperandTypeErr(1, a, "array", "object", "set", "string")
}
func builtinSum(a ast.Value) (ast.Value, error) {
+1 -2
View File
@@ -8,7 +8,6 @@ import (
"github.com/open-policy-agent/opa/ast"
"github.com/open-policy-agent/opa/internal/ref"
"github.com/open-policy-agent/opa/topdown/builtins"
"github.com/open-policy-agent/opa/types"
)
func builtinObjectUnion(_ BuiltinContext, operands []*ast.Term, iter func(*ast.Term) error) error {
@@ -148,7 +147,7 @@ func getObjectKeysParam(arrayOrSet ast.Value) (ast.Set, error) {
return nil
})
default:
return nil, builtins.NewOperandTypeErr(2, arrayOrSet, ast.TypeName(types.Object{}), ast.TypeName(types.S), ast.TypeName(types.Array{}))
return nil, builtins.NewOperandTypeErr(2, arrayOrSet, "object", "set", "array")
}
return keys, nil