Skip to content

Commit 4b27149

Browse files
Option to configure CEL via env.Config object (#1129)
* FromConfig option to configure CEL from an external config file * Validation tests and cel package tests
1 parent 4adcf4d commit 4b27149

File tree

10 files changed

+1053
-288
lines changed

10 files changed

+1053
-288
lines changed

cel/cel_test.go

Lines changed: 49 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -361,19 +361,20 @@ func TestExtendStdlibFunction(t *testing.T) {
361361
}
362362

363363
func TestSubsetStdLib(t *testing.T) {
364-
env, err := NewCustomEnv(StdLib(StdLibSubset(
365-
&env.LibrarySubset{
366-
IncludeMacros: []string{"has"},
367-
IncludeFunctions: []*env.Function{
368-
{Name: operators.Equals},
369-
{Name: operators.NotEquals},
370-
{Name: operators.LogicalAnd},
371-
{Name: operators.LogicalOr},
372-
{Name: operators.LogicalNot},
373-
{Name: overloads.Size, Overloads: []*env.Overload{{ID: "list_size"}}},
364+
env, err := NewCustomEnv(
365+
StdLib(StdLibSubset(
366+
&env.LibrarySubset{
367+
IncludeMacros: []string{"has"},
368+
IncludeFunctions: []*env.Function{
369+
{Name: operators.Equals},
370+
{Name: operators.NotEquals},
371+
{Name: operators.LogicalAnd},
372+
{Name: operators.LogicalOr},
373+
{Name: operators.LogicalNot},
374+
{Name: overloads.Size, Overloads: []*env.Overload{{ID: "list_size"}}},
375+
},
374376
},
375-
},
376-
)))
377+
)))
377378
if err != nil {
378379
t.Fatalf("StdLib() subsetting failed: %v", err)
379380
}
@@ -443,6 +444,42 @@ func TestSubsetStdLib(t *testing.T) {
443444
}
444445
}
445446

447+
func TestSubsetStdLibError(t *testing.T) {
448+
_, err := NewCustomEnv(
449+
StdLib(StdLibSubset(
450+
env.NewLibrarySubset().AddIncludedMacros("has").AddExcludedMacros("exists")),
451+
))
452+
if err == nil || !strings.Contains(err.Error(), "invalid subset") {
453+
t.Errorf("StdLib() subsetting got %v, wanted error 'invalid subset'", err)
454+
}
455+
}
456+
457+
func TestSubsetStdLibMerge(t *testing.T) {
458+
_, err := NewCustomEnv(
459+
Function("size", MemberOverload("string_size", []*Type{StringType}, IntType)),
460+
StdLib(StdLibSubset(
461+
env.NewLibrarySubset().AddIncludedFunctions([]*env.Function{
462+
{Name: overloads.Size, Overloads: []*env.Overload{{ID: "string_size"}}},
463+
}...),
464+
)))
465+
if err != nil {
466+
t.Errorf("StdLib() subsetting failed to merge: %v", err)
467+
}
468+
}
469+
470+
func TestSubsetStdLibMergeError(t *testing.T) {
471+
_, err := NewCustomEnv(
472+
Function("size", MemberOverload("string_size", []*Type{StringType}, UintType)),
473+
StdLib(StdLibSubset(
474+
env.NewLibrarySubset().AddIncludedFunctions([]*env.Function{
475+
{Name: overloads.Size, Overloads: []*env.Overload{{ID: "string_size"}}},
476+
}...),
477+
)))
478+
if err == nil || !strings.Contains(err.Error(), "merge failed") {
479+
t.Errorf("StdLib() subsetting got %v, wanted error 'merge failed'", err)
480+
}
481+
}
482+
446483
func TestCustomTypes(t *testing.T) {
447484
reg := types.NewEmptyRegistry()
448485
env := testEnv(t,

0 commit comments

Comments
 (0)