Skip to content

Commit 02833e2

Browse files
l46kokcopybara-github
authored andcommitted
No public description
PiperOrigin-RevId: 1002776943
1 parent abcde1c commit 02833e2

22 files changed

Lines changed: 489 additions & 198 deletions

‎conformance/src/test/java/dev/cel/conformance/BUILD.bazel‎

Lines changed: 147 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
load("@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

44
package(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+
171293
conformance_test(
172294
name = "conformance",
173295
data = _ALL_TESTS,
@@ -190,6 +312,29 @@ conformance_test(
190312
conformance_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

Comments
 (0)