@@ -450,5 +450,54 @@ TEST(TestRunnerCustomCompilerTest,
450450 std::move (runtime), /* options=*/ {.checked_expr = checked_expr}));
451451 EXPECT_NO_FATAL_FAILURE (test_runner.RunTest (test_case));
452452}
453+
454+ TEST_F (TestRunnerTest, BasicTestWithErrorAssertion) {
455+ // Compile the expression.
456+ ASSERT_OK_AND_ASSIGN (cel::ValidationResult validation_result,
457+ compiler_->Compile (" x + y" ));
458+ CheckedExpr checked_expr;
459+ ASSERT_THAT (cel::AstToCheckedExpr (*validation_result.GetAst (), &checked_expr),
460+ absl_testing::IsOk ());
461+ // Create a runtime.
462+ ASSERT_OK_AND_ASSIGN (std::unique_ptr<const cel::Runtime> runtime,
463+ CreateTestRuntime ());
464+ TestCase test_case = ParseTextProtoOrDie<TestCase>(R"pb(
465+ input {
466+ key: "x"
467+ value { value { int64_value: 1 } }
468+ }
469+ output {
470+ eval_error {
471+ errors { message: "No value with name \"y\" found in Activation" }
472+ }
473+ }
474+ )pb" );
475+ TestRunner test_runner (CelTestContext::CreateFromRuntime (
476+ std::move (runtime), /* options=*/ {.checked_expr = checked_expr}));
477+ EXPECT_NO_FATAL_FAILURE (test_runner.RunTest (test_case));
478+ }
479+
480+ TEST_F (TestRunnerTest, BasicTestFailsWhenExpectingErrorButGotValue) {
481+ // Compile the expression.
482+ ASSERT_OK_AND_ASSIGN (cel::ValidationResult validation_result,
483+ compiler_->Compile (" 1 + 1" ));
484+ CheckedExpr checked_expr;
485+ ASSERT_THAT (cel::AstToCheckedExpr (*validation_result.GetAst (), &checked_expr),
486+ absl_testing::IsOk ());
487+ // Create a runtime.
488+ ASSERT_OK_AND_ASSIGN (std::unique_ptr<const cel::Runtime> runtime,
489+ CreateTestRuntime ());
490+ TestCase test_case = ParseTextProtoOrDie<TestCase>(R"pb(
491+ output {
492+ eval_error {
493+ errors { message: "No value with name \"y\" found in Activation" }
494+ }
495+ }
496+ )pb" );
497+ TestRunner test_runner (CelTestContext::CreateFromRuntime (
498+ std::move (runtime), /* options=*/ {.checked_expr = checked_expr}));
499+ EXPECT_NONFATAL_FAILURE (test_runner.RunTest (test_case),
500+ " Expected error but got value" );
501+ }
453502} // namespace
454503} // namespace cel::test
0 commit comments