| 76 | } |
| 77 | |
| 78 | absl::StatusOr<CheckedExpr> Compile(absl::string_view expression, |
| 79 | const CelTestContext& context) { |
| 80 | const auto* compiler = context.compiler(); |
| 81 | if (compiler == nullptr) { |
| 82 | return absl::InvalidArgumentError( |
| 83 | "A compiler must be provided to compile a raw expression or .cel " |
| 84 | "file."); |
| 85 | } |
| 86 | |
| 87 | CEL_ASSIGN_OR_RETURN(ValidationResult validation_result, |
| 88 | compiler->Compile(expression)); |
| 89 | if (!validation_result.IsValid()) { |
| 90 | return absl::InternalError(validation_result.FormatError()); |
| 91 | } |
| 92 | |
| 93 | CheckedExpr checked_expr; |
| 94 | CEL_RETURN_IF_ERROR( |
| 95 | AstToCheckedExpr(*validation_result.GetAst(), &checked_expr)); |
| 96 | return checked_expr; |
| 97 | } |
| 98 | |
| 99 | absl::StatusOr<std::unique_ptr<cel::Program>> Plan( |
| 100 | const CheckedExpr& checked_expr, const cel::Runtime* runtime) { |
no test coverage detected