mirror of
https://github.com/open-policy-agent/opa.git
synced 2026-08-12 19:32:48 -06:00
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:
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user