11load ("@rules_java//java:defs.bzl" , "java_library" )
2- load ("//conformance/src/test/java/dev/cel/conformance:conformance_test.bzl" , "MODE" , "conformance_test" )
2+ load ("//conformance/src/test/java/dev/cel/conformance:conformance_test.bzl" , "MODE" , "RUNTIME" , " conformance_test" )
33
44package (default_applicable_licenses = [
55 "//:license" ,
@@ -26,17 +26,35 @@ java_library(
2626 "//common/ast:cel_block" ,
2727 "//common/types" ,
2828 "//common/types:cel_proto_types" ,
29+ "//common/types:message_type_provider" ,
30+ "//common/types:type_providers" ,
31+ "//common/values:cel_value_provider" ,
32+ "//common/values:proto_message_lite_value_provider" ,
2933 "//compiler" ,
3034 "//compiler:compiler_builder" ,
3135 "//extensions" ,
3236 "//extensions:bindings" ,
37+ "//extensions:comprehensions_runtime_library" ,
38+ "//extensions:encoders_runtime_library" ,
39+ "//extensions:lists_runtime_library" ,
40+ "//extensions:math_runtime_library" ,
3341 "//extensions:optional_library" ,
42+ "//extensions:sets_runtime_library" ,
43+ "//extensions:strings_runtime_library" ,
44+ "//optimizer" ,
45+ "//optimizer/optimizers:select_optimizer" ,
3446 "//parser:macro" ,
3547 "//parser:parser_builder" ,
3648 "//parser:parser_factory" ,
3749 "//runtime" ,
50+ "//runtime:lite_runtime" ,
51+ "//runtime:lite_runtime_factory" ,
52+ "//runtime:program" ,
3853 "//runtime:runtime_planner_impl" ,
54+ "//runtime:standard_functions" ,
3955 "//testing:expr_value_utils" ,
56+ "//testing/protos:test_all_types_cel_java_proto2" ,
57+ "//testing/protos:test_all_types_cel_java_proto3" ,
4058 "@cel_spec//proto/cel/expr:expr_java_proto" ,
4159 "@cel_spec//proto/cel/expr/conformance/proto2:test_all_types_java_proto" ,
4260 "@cel_spec//proto/cel/expr/conformance/proto3:test_all_types_java_proto" ,
@@ -63,10 +81,17 @@ java_library(
6381 tags = ["conformance_maven" ],
6482 deps = MAVEN_JAR_DEPS + [
6583 "//:java_truth" ,
84+ "//common/values:proto_message_lite_value_provider" ,
6685 "//compiler:compiler_builder" ,
86+ "//optimizer" ,
87+ "//optimizer/optimizers:select_optimizer" ,
6788 "//parser:parser_factory" ,
89+ "//runtime:lite_runtime" ,
90+ "//runtime:lite_runtime_factory" ,
6891 "//runtime:runtime_planner_impl" ,
6992 "//testing:expr_value_utils" ,
93+ "//testing/protos:test_all_types_cel_java_proto2" ,
94+ "//testing/protos:test_all_types_cel_java_proto3" ,
7095 "@cel_spec//proto/cel/expr:expr_java_proto" ,
7196 "@cel_spec//proto/cel/expr/conformance/proto2:test_all_types_java_proto" ,
7297 "@cel_spec//proto/cel/expr/conformance/proto3:test_all_types_java_proto" ,
@@ -168,6 +193,103 @@ _TESTS_TO_SKIP_PLANNER = [
168193 "enums/strong_proto3" ,
169194]
170195
196+ _TESTS_TO_SKIP_PLANNER_SELECT_OPT = _TESTS_TO_SKIP_PLANNER + [
197+ # TODO: Optional field selection on proto messages is not yet supported by
198+ # SelectOptimizer.
199+ "optionals/optionals/empty_struct_optindex_hasValue,optional_empty_struct_optindex_hasValue,struct_optindex_value,optional_struct_optindex_value,optional_struct_optindex_index_value" ,
200+
201+ # TODO: google.protobuf.Any field selection is not yet supported by
202+ # SelectOptimizer.
203+ "dynamic/any/field_read_proto2,field_read_proto3" ,
204+ "dynamic/complex/any_list_map" ,
205+ "proto2/set_null/single_any,repeated_field_anytype_null_retained" ,
206+ "proto3/set_null/single_any,repeated_field_anytype_null_retained" ,
207+ "wrappers/bool/to_any" ,
208+ "wrappers/int32/to_any" ,
209+ "wrappers/int64/to_any" ,
210+ "wrappers/uint32/to_any" ,
211+ "wrappers/uint64/to_any" ,
212+ "wrappers/float/to_any" ,
213+ "wrappers/double/to_any" ,
214+ "wrappers/bytes/to_any" ,
215+ "wrappers/string/to_any" ,
216+ "wrappers/value/default_to_json" ,
217+ "wrappers/list_value/literal_to_any" ,
218+ "wrappers/struct/literal_to_any" ,
219+ ]
220+
221+ _TESTS_TO_SKIP_LITE_SELECT_OPT = _TESTS_TO_SKIP_PLANNER + [
222+ # Optionals are not supported in CelLiteRuntime.
223+ "optionals" ,
224+ "block_ext/basic/optional_list,optional_map,optional_map_chained,optional_message" ,
225+
226+ # Proto2 extensions are not supported in CelLiteRuntime.
227+ "proto2_ext" ,
228+ "proto2/extensions_has" ,
229+ "proto2/extensions_get" ,
230+
231+ # TODO: Proto equality after dyn() unwrapping is not yet supported in
232+ # CelLiteRuntime.
233+ "comparisons/eq_literal/not_eq_dyn_proto2_msg_null,not_eq_dyn_proto3_msg_null" ,
234+ "comparisons/eq_wrapper/eq_proto_different_types" ,
235+ "comparisons/ne_literal/ne_proto_different_types" ,
236+
237+ # TODO: google.protobuf.Any unpacking is not yet supported in CelLiteRuntime.
238+ "dynamic/any/literal_empty,var" ,
239+
240+ # TODO: Message creation with prepopulated fields is not yet supported in
241+ # CelLiteRuntime.
242+ "comparisons/eq_wrapper/eq_bool,eq_bytes,eq_double,eq_float,eq_int32,eq_int64,eq_string,eq_uint32,eq_uint64" ,
243+ "comparisons/eq_wrapper/eq_proto2,eq_proto3,eq_proto2_missing_fields_neq,eq_proto3_missing_fields_neq,eq_proto_nan_equal" ,
244+ "comparisons/eq_wrapper/eq_proto2_any_unpack_equal,eq_proto2_any_unpack_not_equal,eq_proto2_any_unpack_bytewise_fallback_not_equal,eq_proto2_any_unpack_bytewise_fallback_equal,eq_proto3_any_unpack_equal,eq_proto3_any_unpack_not_equal,eq_proto3_any_unpack_bytewise_fallback_not_equal,eq_proto3_any_unpack_bytewise_fallback_equal" ,
245+ "comparisons/ne_literal/ne_proto2,ne_proto3,ne_proto2_missing_fields_neq,ne_proto3_missing_fields_neq,ne_proto_nan_not_equal" ,
246+ "comparisons/ne_literal/ne_proto2_any_unpack,ne_proto2_any_unpack_bytewise_fallback,ne_proto3_any_unpack,ne_proto3_any_unpack_bytewise_fallback" ,
247+ "dynamic/int32/literal,literal_no_field_access,field_assign_proto2,field_assign_proto2_zero,field_assign_proto2_max,field_assign_proto2_min,field_assign_proto2_range,field_read_proto2,field_read_proto2_zero,field_assign_proto3,field_assign_proto3_zero,field_assign_proto3_max,field_assign_proto3_min,field_assign_proto3_range,field_read_proto3,field_read_proto3_zero" ,
248+ "dynamic/int64/literal,literal_no_field_access,field_assign_proto2,field_assign_proto2_zero,field_assign_proto3,field_assign_proto3_zero" ,
249+ "dynamic/uint32/literal,literal_no_field_access,field_assign_proto2,field_assign_proto2_zero,field_assign_proto2_max,field_assign_proto2_range,field_assign_proto3,field_assign_proto3_zero,field_assign_proto3_max,field_assign_proto3_range,field_read_proto2,field_read_proto2_zero" ,
250+ "dynamic/uint64/literal,literal_no_field_access,field_assign_proto2,field_assign_proto2_zero,field_assign_proto3,field_assign_proto3_zero,field_read_proto2,field_read_proto2_zero" ,
251+ "dynamic/float/literal,literal_not_double,literal_no_field_access,field_assign_proto2,field_assign_proto2_zero,field_assign_proto2_subnorm,field_assign_proto2_round_to_zero,field_assign_proto2_range,field_read_proto2,field_read_proto2_zero,field_assign_proto3,field_assign_proto3_zero,field_assign_proto3_subnorm,field_assign_proto3_round_to_zero,field_assign_proto3_range,field_read_proto3,field_read_proto3_zero" ,
252+ "dynamic/double/literal,literal_no_field_access,field_assign_proto2,field_assign_proto2_zero,field_assign_proto2_range,field_read_proto2,field_read_proto2_zero,field_assign_proto3,field_assign_proto3_zero,field_assign_proto3_range,field_read_proto3,field_read_proto3_zero" ,
253+ "dynamic/bool/literal,literal_no_field_access,field_assign_proto2,field_assign_proto2_false,field_assign_proto3,field_assign_proto3_false" ,
254+ "dynamic/string/literal,literal_no_field_access,literal_unicode,field_assign_proto2,field_assign_proto2_empty,field_assign_proto3,field_assign_proto3_empty" ,
255+ "dynamic/bytes/literal,literal_no_field_access,literal_unicode,field_assign_proto2,field_assign_proto2_empty,field_assign_proto3,field_assign_proto3_empty" ,
256+ "dynamic/list/literal,literal_no_field_access,literal_empty,field_assign_proto2,field_assign_proto2_empty,field_read_proto2,field_read_proto2_empty,field_assign_proto3,field_assign_proto3_empty,field_read_proto3,field_read_proto3_empty" ,
257+ "dynamic/struct/literal,literal_no_field_access,literal_empty,field_assign_proto2,field_assign_proto2_empty,field_assign_proto2_bad,field_read_proto2,field_read_proto2_empty,field_assign_proto3,field_assign_proto3_empty,field_assign_proto3_bad,field_read_proto3,field_read_proto3_empty" ,
258+ "dynamic/value_null/literal,literal_no_field_access,field_assign_proto2,field_read_proto2,field_assign_proto3,field_read_proto3" ,
259+ "dynamic/value_number/literal,literal_no_field_access,literal_zero,field_assign_proto2,field_assign_proto2_zero,field_read_proto2,field_read_proto2_zero,field_assign_proto3,field_assign_proto3_zero,field_read_proto3,field_read_proto3_zero" ,
260+ "dynamic/value_string/literal,literal_no_field_access,literal_empty,field_assign_proto2,field_assign_proto2_empty,field_read_proto2,field_read_proto2_zero,field_assign_proto3,field_assign_proto3_empty,field_read_proto3,field_read_proto3_zero" ,
261+ "dynamic/value_bool/literal,literal_no_field_access,literal_false,field_assign_proto2,field_assign_proto2_false,field_read_proto2,field_read_proto2_false,field_assign_proto3,field_assign_proto3_false,field_read_proto3,field_read_proto3_false" ,
262+ "dynamic/value_struct/literal,literal_no_field_access,literal_empty,field_assign_proto2,field_assign_proto2_empty,field_read_proto2,field_read_proto2_empty,field_assign_proto3,field_assign_proto3_empty,field_read_proto3,field_read_proto3_empty" ,
263+ "dynamic/value_list/literal,literal_no_field_access,literal_empty,field_assign_proto2,field_assign_proto2_empty,field_read_proto2,field_read_proto2_empty,field_assign_proto3,field_assign_proto3_empty,field_read_proto3,field_read_proto3_empty" ,
264+ "dynamic/any/literal,literal_no_field_access,field_assign_proto2,field_read_proto2,field_assign_proto3,field_read_proto3" ,
265+ "dynamic/complex" ,
266+ "enums/legacy_proto2/assign_standalone_name,assign_standalone_int,assign_standalone_int_too_big,assign_standalone_int_too_neg,assign_repeated_enum,list_enum_as_list_int,enum_as_int" ,
267+ "enums/legacy_proto3/assign_standalone_name,assign_standalone_int,assign_standalone_int_big,assign_standalone_int_neg,assign_standalone_int_too_big,assign_standalone_int_too_neg,assign_repeated_enum,list_enum_as_list_int,enum_as_int" ,
268+ "parse/nest/message_literal" ,
269+ "parse/repeat/message_literal" ,
270+ "parse/whitespace" ,
271+ "parse/comments" ,
272+ "parse/struct_field_names" ,
273+ "proto2/literal_singular" ,
274+ "proto2/literal_wellknown" ,
275+ "proto2/set_null" ,
276+ "proto2/quoted_fields" ,
277+ "proto2/has/repeated_none_explicit,repeated_one,repeated_many,map_none_explicit,map_one_default,map_one,map_many,required,optional_set_no_default,optional_set_with_default,optional_set_to_default,optional_message_set,optional_enum_set,optional_enum_set_zero,oneof_other_set,oneof_set,oneof_set_default" ,
278+ "proto3/literal_singular" ,
279+ "proto3/literal_wellknown" ,
280+ "proto3/set_null" ,
281+ "proto3/quoted_fields" ,
282+ "proto3/has/repeated_none_explicit,repeated_one,repeated_many,map_none_explicit,map_one_default,map_one,map_many,single_set,single_set_to_default,single_message_set,single_message_set_to_default,single_enum_set,single_enum_set_zero,oneof_other_set,oneof_set,oneof_set_default" ,
283+ "type_deductions/complex_initializers/struct" ,
284+ "type_deductions/field_access/int_field" ,
285+ "wrappers" ,
286+ ]
287+
288+ _TESTS_TO_SKIP_LITE = _TESTS_TO_SKIP_LITE_SELECT_OPT + [
289+ # Custom proto2 default values on unset fields require SelectOptimization in CelLiteRuntime.
290+ "proto2/empty_field/scalar_with_default" ,
291+ ]
292+
171293conformance_test (
172294 name = "conformance" ,
173295 data = _ALL_TESTS ,
@@ -190,6 +312,29 @@ conformance_test(
190312conformance_test (
191313 name = "conformance_planner" ,
192314 data = _ALL_TESTS ,
315+ runtime = RUNTIME .PLANNER ,
193316 skip_tests = _TESTS_TO_SKIP_PLANNER ,
194- use_planner = True ,
317+ )
318+
319+ conformance_test (
320+ name = "conformance_planner_select_opt" ,
321+ data = _ALL_TESTS ,
322+ enable_select_optimization = True ,
323+ runtime = RUNTIME .PLANNER ,
324+ skip_tests = _TESTS_TO_SKIP_PLANNER_SELECT_OPT ,
325+ )
326+
327+ conformance_test (
328+ name = "conformance_lite" ,
329+ data = _ALL_TESTS ,
330+ runtime = RUNTIME .LITE ,
331+ skip_tests = _TESTS_TO_SKIP_LITE ,
332+ )
333+
334+ conformance_test (
335+ name = "conformance_lite_select_opt" ,
336+ data = _ALL_TESTS ,
337+ enable_select_optimization = True ,
338+ runtime = RUNTIME .LITE ,
339+ skip_tests = _TESTS_TO_SKIP_LITE_SELECT_OPT ,
195340)
0 commit comments