| 57 | } |
| 58 | |
| 59 | TEST(CoverageIndexTest, RecordCoverageWithErrorDoesNotCrash) { |
| 60 | ASSERT_OK_AND_ASSIGN( |
| 61 | std::unique_ptr<cel::CompilerBuilder> compiler_builder, |
| 62 | cel::NewCompilerBuilder(cel::internal::GetTestingDescriptorPool())); |
| 63 | ASSERT_THAT(compiler_builder->AddLibrary(cel::StandardCompilerLibrary()), |
| 64 | IsOk()); |
| 65 | ASSERT_THAT(compiler_builder->GetCheckerBuilder().AddVariable( |
| 66 | cel::MakeVariableDecl("x", cel::IntType())), |
| 67 | IsOk()); |
| 68 | ASSERT_OK_AND_ASSIGN(std::unique_ptr<cel::Compiler> compiler, |
| 69 | std::move(compiler_builder)->Build()); |
| 70 | ASSERT_OK_AND_ASSIGN(cel::ValidationResult validation_result, |
| 71 | compiler->Compile("1/x > 1")); |
| 72 | CheckedExpr checked_expr; |
| 73 | ASSERT_THAT(cel::AstToCheckedExpr(*validation_result.GetAst(), &checked_expr), |
| 74 | IsOk()); |
| 75 | |
| 76 | CoverageIndex coverage_index; |
| 77 | coverage_index.Init(checked_expr); |
| 78 | |
| 79 | ASSERT_OK_AND_ASSIGN(std::unique_ptr<const cel::Runtime> runtime, |
| 80 | CreateTestRuntime()); |
| 81 | ASSERT_THAT(EnableCoverageInRuntime(*const_cast<cel::Runtime*>(runtime.get()), |
| 82 | coverage_index), |
| 83 | IsOk()); |
| 84 | ASSERT_OK_AND_ASSIGN(std::unique_ptr<cel::Ast> ast, |
| 85 | cel::CreateAstFromCheckedExpr(checked_expr)); |
| 86 | ASSERT_OK_AND_ASSIGN(auto program, runtime->CreateProgram(std::move(ast))); |
| 87 | |
| 88 | cel::Activation activation; |
| 89 | activation.InsertOrAssignValue("x", cel::IntValue(0)); |
| 90 | google::protobuf::Arena arena; |
| 91 | ASSERT_OK_AND_ASSIGN(cel::Value result, |
| 92 | program->Evaluate(&arena, activation)); |
| 93 | EXPECT_TRUE(result.IsError()); |
| 94 | } |
| 95 | |
| 96 | TEST(CoverageIndexTest, WriteLCOV) { |
| 97 | ASSERT_OK_AND_ASSIGN( |
nothing calls this directly
no test coverage detected