Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
a30d67d
Add k8s custom policy tag handler for test
aakash070 Feb 4, 2025
77aab71
added copyright and removed redundant attribute from go_library target
aakash070 Feb 5, 2025
9e155af
refactor code to extract common methods
aakash070 Mar 10, 2025
73bba9e
reverted redundant code
aakash070 Mar 11, 2025
7afe78c
added compiler tool
aakash070 Mar 12, 2025
d261979
replaced textproto file with an in memory pb object
aakash070 Mar 21, 2025
6cb138d
reverted update to root go.mod
aakash070 Mar 25, 2025
5cab162
added cel.dev/expr/conformance to vendor
aakash070 Mar 25, 2025
907b6c3
add vendor to tools
aakash070 Mar 25, 2025
09f6866
deleted tools/vendor
aakash070 Mar 25, 2025
bf7624c
Add test runner library
aakash070 Apr 2, 2025
afdf755
created test runner option for test suite parser
aakash070 Apr 2, 2025
e6028d1
update test suite structure
aakash070 Apr 4, 2025
98be9bd
fix test suite path used to set up test suite parser
aakash070 Apr 4, 2025
dcfc1a0
updated cel.dev/expr version in WORKSPACE
aakash070 Apr 7, 2025
a8a77f5
updated go registered toolchain version in WORKSPACE
aakash070 Apr 7, 2025
3c58df5
updated checksum for cel.dev/expr in WORKSPACE
aakash070 Apr 7, 2025
b867b8a
update cel.dev/expr release version to resolve failing tests
aakash070 Apr 7, 2025
9b8248c
fix vendor verification error
aakash070 Apr 7, 2025
bf96c47
resolved pr comments on YAML test suite and test runner
aakash070 Apr 8, 2025
449ba4f
update test runner to accept any type options instead of TestRunnerOp…
aakash070 Apr 8, 2025
b8c7496
replaced functional test suite parsers with an interface
aakash070 Apr 9, 2025
f942827
update test suite schema in policy testdata files
aakash070 Apr 10, 2025
61399be
added sync once as a compiler object level variable
aakash070 Apr 10, 2025
2dad2f3
fix test failure
aakash070 Apr 10, 2025
c101087
added test for test runner for standard policy
aakash070 Apr 10, 2025
156addf
added tests for custom policy parser via flags
aakash070 Apr 11, 2025
f2022c3
moved test for custom policy from compiler test to test runner test
aakash070 Apr 14, 2025
59cf7ee
changed argument type for Test Suite Parser methods to string
aakash070 Apr 14, 2025
70d7f5f
added tests for raw CEL expression and CEL expression file
aakash070 Apr 14, 2025
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
update test suite structure
  • Loading branch information
aakash070 committed Apr 15, 2025
commit e6028d18605b63cf43ffbd2a8c0a866a6cde5997
73 changes: 35 additions & 38 deletions tools/celtest/test_runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -395,53 +395,50 @@ func (tr *TestRunner) createTestsFromTextproto(t *testing.T, testSuite *conforma
func (tr *TestRunner) createTestInputFromPB(t *testing.T, testCase *conformancepb.TestCase) (interpreter.Activation, error) {
t.Helper()
input := map[string]any{}
if testCase.GetInput() == nil {
return interpreter.NewActivation(input)
}
e, err := tr.CreateEnv()
if err != nil {
return nil, err
}
switch testInput := testCase.GetInput().GetInputKind().(type) {
case *conformancepb.TestInput_ContextExpr:
refVal, err := tr.eval(testInput.ContextExpr)
if err != nil {
return nil, fmt.Errorf("eval(%q) failed: %w", testInput.ContextExpr, err)
if testCase.GetInputContext() != nil {
if len(testCase.GetInput()) != 0 {
return nil, fmt.Errorf("only one of input and input_context can be provided at a time")
}
ctx, err := refVal.ConvertToNative(
reflect.TypeOf((*proto.Message)(nil)).Elem())
if err != nil {
return nil, fmt.Errorf("context variable is not a valid proto: %w", err)
}
return cel.ContextProtoVars(ctx.(proto.Message))
case *conformancepb.TestInput_Bindings:
if testInput.Bindings.GetValues() == nil {
return nil, fmt.Errorf("bindings is nil")
}
for k, v := range testInput.Bindings.GetValues() {
switch v.GetKind().(type) {
case *conformancepb.InputValue_Value:
input[k], err = cel.ProtoAsValue(e.CELTypeAdapter(), v.GetValue())
if err != nil {
return nil, fmt.Errorf("cel.ProtoAsValue(%q) failed: %w", v, err)
}
case *conformancepb.InputValue_Expr:
input[k], err = tr.eval(v.GetExpr())
if err != nil {
return nil, fmt.Errorf("eval(%q) failed: %w", v.GetExpr(), err)
}
switch testInput := testCase.GetInputContext().GetInputContextKind().(type) {
case *conformancepb.InputContext_ContextExpr:
refVal, err := tr.eval(testInput.ContextExpr)
if err != nil {
return nil, fmt.Errorf("eval(%q) failed: %w", testInput.ContextExpr, err)
}
ctx, err := refVal.ConvertToNative(
reflect.TypeOf((*proto.Message)(nil)).Elem())
if err != nil {
return nil, fmt.Errorf("context variable is not a valid proto: %w", err)
}
return cel.ContextProtoVars(ctx.(proto.Message))
case *conformancepb.InputContext_ContextMessage:
refVal := e.CELTypeAdapter().NativeToValue(testInput.ContextMessage)
ctx, err := refVal.ConvertToNative(reflect.TypeOf((*proto.Message)(nil)).Elem())
if err != nil {
return nil, fmt.Errorf("context variable is not a valid proto: %w", err)
}
return cel.ContextProtoVars(ctx.(proto.Message))
}
return interpreter.NewActivation(input)
case *conformancepb.TestInput_ContextMessage:
refVal := e.CELTypeAdapter().NativeToValue(testInput.ContextMessage)
ctx, err := refVal.ConvertToNative(reflect.TypeOf((*proto.Message)(nil)).Elem())
if err != nil {
return nil, fmt.Errorf("context variable is not a valid proto: %w", err)
}
for k, v := range testCase.GetInput() {
switch v.GetKind().(type) {
case *conformancepb.InputValue_Value:
input[k], err = cel.ProtoAsValue(e.CELTypeAdapter(), v.GetValue())
if err != nil {
return nil, fmt.Errorf("cel.ProtoAsValue(%q) failed: %w", v, err)
}
case *conformancepb.InputValue_Expr:
input[k], err = tr.eval(v.GetExpr())
if err != nil {
return nil, fmt.Errorf("eval(%q) failed: %w", v.GetExpr(), err)
}
}
return cel.ContextProtoVars(ctx.(proto.Message))
}
return nil, nil
return interpreter.NewActivation(input)
}

func (tr *TestRunner) createResultMatcherFromPB(t *testing.T, testCase *conformancepb.TestCase) (func(ref.Val, error) TestResult, error) {
Expand Down
3 changes: 2 additions & 1 deletion tools/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ module github.com/google/cel-go/tools
go 1.23.0

require (
cel.dev/expr v0.22.1
cel.dev/expr v0.23.0
github.com/google/cel-go v0.22.0
github.com/google/cel-go/policy v0.0.0-20250311174852-f5ea07b389a1
github.com/google/go-cmp v0.6.0
google.golang.org/genproto/googleapis/api v0.0.0-20250311190419-81fb87f6b8bf
google.golang.org/protobuf v1.36.5
gopkg.in/yaml.v3 v3.0.1
Expand Down
4 changes: 2 additions & 2 deletions tools/go.sum
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
cel.dev/expr v0.22.1 h1:xoFEsNh972Yzey8N9TCPx2nDvMN7TMhQEzxLuj/iRrI=
cel.dev/expr v0.22.1/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw=
cel.dev/expr v0.23.0 h1:wUb94w6OYQS4uXraxo9U+wUAs9jT47Xvl4iPgAwM2ss=
cel.dev/expr v0.23.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw=
github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
Expand Down