From 22a0e16b6251371fa671a863d7c60ccb5183b413 Mon Sep 17 00:00:00 2001 From: Jonathan Tatum Date: Wed, 21 Oct 2026 22:42:05 +0000 Subject: [PATCH] Upstream internal fixes - update accidentally repeated test in dynamic.textproto - give unique names to tests for strings charAt - run everything through txtpbfmt --- tests/simple/testdata/dynamic.textproto | 546 ++++++++++----------- tests/simple/testdata/string_ext.textproto | 412 ++++++++-------- 2 files changed, 478 insertions(+), 480 deletions(-) diff --git a/tests/simple/testdata/dynamic.textproto b/tests/simple/testdata/dynamic.textproto index d0e63a96..75346a4a 100644 --- a/tests/simple/testdata/dynamic.textproto +++ b/tests/simple/testdata/dynamic.textproto @@ -33,10 +33,13 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.Int32Value] - { value: 2000000 } - } } } + value { + value { + object_value { + [type.googleapis.com/google.protobuf.Int32Value] { value: 2000000 } + } + } + } } value { int64_value: 2000000 } } @@ -46,8 +49,7 @@ section { expr: "TestAllTypes{single_int32_wrapper: 432}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_int32_wrapper { value: 432 } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32_wrapper { value: 432 } } } } } @@ -57,8 +59,7 @@ section { expr: "TestAllTypes{single_int32_wrapper: 0}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_int32_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32_wrapper {} } } } } @@ -68,8 +69,7 @@ section { expr: "TestAllTypes{single_int32_wrapper: 2147483647}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_int32_wrapper { value: 2147483647 } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32_wrapper { value: 2147483647 } } } } } @@ -79,8 +79,7 @@ section { expr: "TestAllTypes{single_int32_wrapper: -2147483648}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_int32_wrapper { value: -2147483648 } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32_wrapper { value: -2147483648 } } } } } @@ -116,8 +115,7 @@ section { expr: "TestAllTypes{single_int32_wrapper: -975}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_int32_wrapper { value: -975 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int32_wrapper { value: -975 } } } } } @@ -127,8 +125,7 @@ section { expr: "TestAllTypes{single_int32_wrapper: 0}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_int32_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int32_wrapper {} } } } } @@ -138,8 +135,7 @@ section { expr: "TestAllTypes{single_int32_wrapper: 2147483647}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_int32_wrapper { value: 2147483647 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int32_wrapper { value: 2147483647 } } } } } @@ -149,8 +145,7 @@ section { expr: "TestAllTypes{single_int32_wrapper: -2147483648}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_int32_wrapper { value: -2147483648 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int32_wrapper { value: -2147483648 } } } } } @@ -211,10 +206,13 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.Int64Value] - { value: 2000000 } - } } } + value { + value { + object_value { + [type.googleapis.com/google.protobuf.Int64Value] { value: 2000000 } + } + } + } } value { int64_value: 2000000 } } @@ -224,8 +222,7 @@ section { expr: "TestAllTypes{single_int64_wrapper: 432}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_int64_wrapper { value: 432 } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int64_wrapper { value: 432 } } } } } @@ -235,8 +232,7 @@ section { expr: "TestAllTypes{single_int64_wrapper: 0}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_int64_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int64_wrapper {} } } } } @@ -246,8 +242,7 @@ section { expr: "TestAllTypes{single_int64_wrapper: -975}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_int64_wrapper { value: -975 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int64_wrapper { value: -975 } } } } } @@ -257,8 +252,7 @@ section { expr: "TestAllTypes{single_int64_wrapper: 0}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_int64_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int64_wrapper {} } } } } @@ -293,10 +287,13 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.UInt32Value] - { value: 2000000 } - } } } + value { + value { + object_value { + [type.googleapis.com/google.protobuf.UInt32Value] { value: 2000000 } + } + } + } } value { uint64_value: 2000000 } } @@ -306,8 +303,7 @@ section { expr: "TestAllTypes{single_uint32_wrapper: 432u}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_uint32_wrapper { value: 432 } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_uint32_wrapper { value: 432 } } } } } @@ -317,8 +313,7 @@ section { expr: "TestAllTypes{single_uint32_wrapper: 0u}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_uint32_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_uint32_wrapper {} } } } } @@ -328,8 +323,7 @@ section { expr: "TestAllTypes{single_uint32_wrapper: 4294967295u}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_uint32_wrapper { value: 4294967295} } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_uint32_wrapper { value: 4294967295 } } } } } @@ -347,8 +341,7 @@ section { expr: "TestAllTypes{single_uint32_wrapper: 975u}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_uint32_wrapper { value: 975 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_uint32_wrapper { value: 975 } } } } } @@ -358,8 +351,7 @@ section { expr: "TestAllTypes{single_uint32_wrapper: 0u}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_uint32_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_uint32_wrapper {} } } } } @@ -369,8 +361,7 @@ section { expr: "TestAllTypes{single_uint32_wrapper: 4294967295u}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_uint32_wrapper { value: 4294967295 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_uint32_wrapper { value: 4294967295 } } } } } @@ -431,10 +422,13 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.UInt64Value] - { value: 2000000 } - } } } + value { + value { + object_value { + [type.googleapis.com/google.protobuf.UInt64Value] { value: 2000000 } + } + } + } } value { uint64_value: 2000000 } } @@ -444,8 +438,7 @@ section { expr: "TestAllTypes{single_uint64_wrapper: 432u}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_uint64_wrapper { value: 432 } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_uint64_wrapper { value: 432 } } } } } @@ -455,8 +448,7 @@ section { expr: "TestAllTypes{single_uint64_wrapper: 0u}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_uint64_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_uint64_wrapper {} } } } } @@ -466,8 +458,7 @@ section { expr: "TestAllTypes{single_uint64_wrapper: 975u}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_uint64_wrapper { value: 975 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_uint64_wrapper { value: 975 } } } } } @@ -477,8 +468,7 @@ section { expr: "TestAllTypes{single_uint64_wrapper: 0u}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_uint64_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_uint64_wrapper {} } } } } @@ -537,10 +527,13 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.FloatValue] - { value: -1.25e6 } - } } } + value { + value { + object_value { + [type.googleapis.com/google.protobuf.FloatValue] { value: -1.25e6 } + } + } + } } value { double_value: -1250000.0 } } @@ -550,8 +543,7 @@ section { expr: "TestAllTypes{single_float_wrapper: 86.75}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_float_wrapper { value: 86.75 } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_float_wrapper { value: 86.75 } } } } } @@ -561,8 +553,7 @@ section { expr: "TestAllTypes{single_float_wrapper: 0.0}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_float_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_float_wrapper {} } } } } @@ -573,8 +564,7 @@ section { expr: "TestAllTypes{single_float_wrapper: 1e-40}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_float_wrapper { value: 1e-40 } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_float_wrapper { value: 1e-40 } } } } } @@ -585,8 +575,7 @@ section { expr: "TestAllTypes{single_float_wrapper: 1e-50}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_float_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_float_wrapper {} } } } } @@ -597,8 +586,7 @@ section { expr: "TestAllTypes{single_float_wrapper: 1.4e55}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_float_wrapper { value: inf } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_float_wrapper { value: inf } } } } } @@ -626,8 +614,7 @@ section { expr: "TestAllTypes{single_float_wrapper: -9.75}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_float_wrapper { value: -9.75 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_float_wrapper { value: -9.75 } } } } } @@ -637,20 +624,18 @@ section { expr: "TestAllTypes{single_float_wrapper: 0.0}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_float_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_float_wrapper {} } } } } test { - name: "field_assign_proto2_subnorm" + name: "field_assign_proto3_subnorm" description: "Subnormal single floats range from ~1e-38 to ~1e-45." - container: "cel.expr.conformance.proto2" + container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_float_wrapper: 1e-40}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_float_wrapper { value: 1e-40 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_float_wrapper { value: 1e-40 } } } } } @@ -660,8 +645,7 @@ section { expr: "TestAllTypes{single_float_wrapper: -9.9e-100}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_float_wrapper { value: -0 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_float_wrapper { value: -0 } } } } } @@ -672,8 +656,7 @@ section { expr: "TestAllTypes{single_float_wrapper: -9.9e100}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_float_wrapper { value: -inf } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_float_wrapper { value: -inf } } } } } @@ -726,10 +709,13 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.DoubleValue] - { value: -1.25e6 } - } } } + value { + value { + object_value { + [type.googleapis.com/google.protobuf.DoubleValue] { value: -1.25e6 } + } + } + } } value { double_value: -1250000.0 } } @@ -739,8 +725,7 @@ section { expr: "TestAllTypes{single_double_wrapper: 86.75}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_double_wrapper { value: 86.75 } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_double_wrapper { value: 86.75 } } } } } @@ -750,8 +735,7 @@ section { expr: "TestAllTypes{single_double_wrapper: 0.0}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_double_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_double_wrapper {} } } } } @@ -761,8 +745,7 @@ section { expr: "TestAllTypes{single_double_wrapper: 1.4e55}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_double_wrapper { value: 1.4e55 } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_double_wrapper { value: 1.4e55 } } } } } @@ -790,8 +773,7 @@ section { expr: "TestAllTypes{single_double_wrapper: -9.75}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_double_wrapper { value: -9.75 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_double_wrapper { value: -9.75 } } } } } @@ -801,8 +783,7 @@ section { expr: "TestAllTypes{single_double_wrapper: 0.0}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_double_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_double_wrapper {} } } } } @@ -812,8 +793,7 @@ section { expr: "TestAllTypes{single_double_wrapper: -9.9e100}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_double_wrapper { value: -9.9e100 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_double_wrapper { value: -9.9e100 } } } } } @@ -866,10 +846,13 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.BoolValue] - { value: true } - } } } + value { + value { + object_value { + [type.googleapis.com/google.protobuf.BoolValue] { value: true } + } + } + } } value { bool_value: true } } @@ -879,8 +862,7 @@ section { expr: "TestAllTypes{single_bool_wrapper: true}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_bool_wrapper { value: true } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_bool_wrapper { value: true } } } } } @@ -890,8 +872,7 @@ section { expr: "TestAllTypes{single_bool_wrapper: false}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_bool_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_bool_wrapper {} } } } } @@ -901,8 +882,7 @@ section { expr: "TestAllTypes{single_bool_wrapper: true}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_bool_wrapper { value: true } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_bool_wrapper { value: true } } } } } @@ -912,8 +892,7 @@ section { expr: "TestAllTypes{single_bool_wrapper: false}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_bool_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_bool_wrapper {} } } } } @@ -953,10 +932,13 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.StringValue] - { value: "bar" } - } } } + value { + value { + object_value { + [type.googleapis.com/google.protobuf.StringValue] { value: "bar" } + } + } + } } value { string_value: "bar" } } @@ -966,8 +948,7 @@ section { expr: "TestAllTypes{single_string_wrapper: 'baz'}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_string_wrapper { value: "baz" } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_string_wrapper { value: "baz" } } } } } @@ -977,8 +958,7 @@ section { expr: "TestAllTypes{single_string_wrapper: ''}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_string_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_string_wrapper {} } } } } @@ -988,8 +968,7 @@ section { expr: "TestAllTypes{single_string_wrapper: 'bletch'}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_string_wrapper { value: "bletch" } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_string_wrapper { value: "bletch" } } } } } @@ -999,8 +978,7 @@ section { expr: "TestAllTypes{single_string_wrapper: ''}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_string_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_string_wrapper {} } } } } @@ -1040,10 +1018,13 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.BytesValue] - { value: "bar" } - } } } + value { + value { + object_value { + [type.googleapis.com/google.protobuf.BytesValue] { value: "bar" } + } + } + } } value { bytes_value: "bar" } } @@ -1053,8 +1034,7 @@ section { expr: "TestAllTypes{single_bytes_wrapper: b'baz'}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_bytes_wrapper { value: "baz" } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_bytes_wrapper { value: "baz" } } } } } @@ -1064,8 +1044,7 @@ section { expr: "TestAllTypes{single_bytes_wrapper: b''}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_bytes_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_bytes_wrapper {} } } } } @@ -1075,8 +1054,7 @@ section { expr: "TestAllTypes{single_bytes_wrapper: b'bletch'}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_bytes_wrapper { value: "bletch" } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_bytes_wrapper { value: "bletch" } } } } } @@ -1086,8 +1064,7 @@ section { expr: "TestAllTypes{single_bytes_wrapper: b''}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_bytes_wrapper { } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_bytes_wrapper {} } } } } @@ -1117,7 +1094,7 @@ section { test { name: "literal_empty" expr: "google.protobuf.ListValue{values: []}" - value { list_value { } } + value { list_value {} } } test { name: "var" @@ -1128,16 +1105,21 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.ListValue] - { + value { + value { + object_value { + [type.googleapis.com/google.protobuf.ListValue] { values { string_value: "bar" } - values { list_value { + values { + list_value { values { string_value: "a" } values { string_value: "b" } - } } + } + } } - } } } + } + } + } } value { list_value { @@ -1157,11 +1139,12 @@ section { expr: "TestAllTypes{list_value: [1.0, 'one']}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { list_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { + list_value { values: { number_value: 1.0 } values: { string_value: "one" } - } } + } + } } } } @@ -1171,8 +1154,7 @@ section { expr: "TestAllTypes{list_value: []}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { list_value { } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { list_value {} } } } } @@ -1191,14 +1173,14 @@ section { name: "field_read_proto2_empty" container: "cel.expr.conformance.proto2" expr: "TestAllTypes{list_value: []}.list_value" - value { list_value { } } + value { list_value {} } } test { name: "field_read_proto2_unset" description: "Not a wrapper type, so doesn't convert to null." container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.list_value" - value { list_value { } } + value { list_value {} } } test { name: "field_assign_proto3" @@ -1206,11 +1188,12 @@ section { expr: "TestAllTypes{list_value: [1.0, 'one']}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { list_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + list_value { values: { number_value: 1.0 } values: { string_value: "one" } - } } + } + } } } } @@ -1220,8 +1203,7 @@ section { expr: "TestAllTypes{list_value: []}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { list_value { } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { list_value {} } } } } @@ -1240,14 +1222,14 @@ section { name: "field_read_proto3_empty" container: "cel.expr.conformance.proto3" expr: "TestAllTypes{list_value: []}.list_value" - value { list_value { } } + value { list_value {} } } test { name: "field_read_proto3_unset" description: "Not a wrapper type, so doesn't convert to null." container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.list_value" - value { list_value { } } + value { list_value {} } } } section { @@ -1280,7 +1262,7 @@ section { test { name: "literal_empty" expr: "google.protobuf.Struct{fields: {}}" - value { map_value { } } + value { map_value {} } } test { name: "var" @@ -1291,9 +1273,10 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.Struct] - { + value { + value { + object_value { + [type.googleapis.com/google.protobuf.Struct] { fields { key: "first" value { string_value: "Abraham" } @@ -1303,7 +1286,9 @@ section { value { string_value: "Lincoln" } } } - } } } + } + } + } } value { map_value { @@ -1324,8 +1309,8 @@ section { expr: "TestAllTypes{single_struct: {'un': 1.0, 'deux': 2.0}}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_struct { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { + single_struct { fields { key: "un" value { number_value: 1.0 } @@ -1334,7 +1319,8 @@ section { key: "deux" value { number_value: 2.0 } } - } } + } + } } } } @@ -1344,8 +1330,7 @@ section { expr: "TestAllTypes{single_struct: {}}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_struct { } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_struct {} } } } } @@ -1375,14 +1360,14 @@ section { name: "field_read_proto2_empty" container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_struct: {}}.single_struct" - value { map_value { } } + value { map_value {} } } test { name: "field_read_proto2_unset" description: "Not a wrapper type, so doesn't convert to null." container: "cel.expr.conformance.proto2" expr: "TestAllTypes{}.single_struct" - value { map_value { } } + value { map_value {} } } test { name: "field_assign_proto3" @@ -1390,8 +1375,8 @@ section { expr: "TestAllTypes{single_struct: {'un': 1.0, 'deux': 2.0}}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_struct { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_struct { fields { key: "un" value { number_value: 1.0 } @@ -1400,7 +1385,8 @@ section { key: "deux" value { number_value: 2.0 } } - } } + } + } } } } @@ -1410,8 +1396,7 @@ section { expr: "TestAllTypes{single_struct: {}}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_struct { } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_struct {} } } } } @@ -1441,14 +1426,14 @@ section { name: "field_read_proto3_empty" container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_struct: {}}.single_struct" - value { map_value { } } + value { map_value {} } } test { name: "field_read_proto3_unset" description: "Not a wrapper type, so doesn't convert to null." container: "cel.expr.conformance.proto3" expr: "TestAllTypes{}.single_struct" - value { map_value { } } + value { map_value {} } } } section { @@ -1483,10 +1468,13 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.Value] - { null_value: NULL_VALUE } - } } } + value { + value { + object_value { + [type.googleapis.com/google.protobuf.Value] { null_value: NULL_VALUE } + } + } + } } value { null_value: NULL_VALUE } } @@ -1496,8 +1484,7 @@ section { expr: "TestAllTypes{single_value: null}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_value { null_value: NULL_VALUE } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { null_value: NULL_VALUE } } } } } @@ -1519,8 +1506,7 @@ section { expr: "TestAllTypes{single_value: null}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_value { null_value: NULL_VALUE } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { null_value: NULL_VALUE } } } } } @@ -1567,10 +1553,13 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.Value] - { number_value: -26.375 } - } } } + value { + value { + object_value { + [type.googleapis.com/google.protobuf.Value] { number_value: -26.375 } + } + } + } } value { double_value: -26.375 } } @@ -1580,8 +1569,7 @@ section { expr: "TestAllTypes{single_value: 7e23}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_value { number_value: 7e23 } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { number_value: 7e23 } } } } } @@ -1591,8 +1579,7 @@ section { expr: "TestAllTypes{single_value: 0.0}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_value { number_value: 0.0 } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { number_value: 0.0 } } } } } @@ -1614,8 +1601,7 @@ section { expr: "TestAllTypes{single_value: 7e23}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_value { number_value: 7e23 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { number_value: 7e23 } } } } } @@ -1625,8 +1611,7 @@ section { expr: "TestAllTypes{single_value: 0.0}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_value { number_value: 0.0 } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { number_value: 0.0 } } } } } @@ -1673,10 +1658,13 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.Value] - { string_value: "bar" } - } } } + value { + value { + object_value { + [type.googleapis.com/google.protobuf.Value] { string_value: "bar" } + } + } + } } value { string_value: "bar" } } @@ -1686,8 +1674,7 @@ section { expr: "TestAllTypes{single_value: 'baz'}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_value { string_value: "baz" } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { string_value: "baz" } } } } } @@ -1697,8 +1684,7 @@ section { expr: "TestAllTypes{single_value: ''}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_value { string_value: "" } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { string_value: "" } } } } } @@ -1720,8 +1706,7 @@ section { expr: "TestAllTypes{single_value: 'baz'}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_value { string_value: "baz" } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { string_value: "baz" } } } } } @@ -1731,8 +1716,7 @@ section { expr: "TestAllTypes{single_value: ''}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_value { string_value: "" } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { string_value: "" } } } } } @@ -1779,10 +1763,13 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.Value] - { bool_value: true } - } } } + value { + value { + object_value { + [type.googleapis.com/google.protobuf.Value] { bool_value: true } + } + } + } } value { bool_value: true } } @@ -1792,8 +1779,7 @@ section { expr: "TestAllTypes{single_value: true}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_value { bool_value: true } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { bool_value: true } } } } } @@ -1803,8 +1789,7 @@ section { expr: "TestAllTypes{single_value: false}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_value { bool_value: false } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { bool_value: false } } } } } @@ -1826,8 +1811,7 @@ section { expr: "TestAllTypes{single_value: true}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_value { bool_value: true } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { bool_value: true } } } } } @@ -1837,8 +1821,7 @@ section { expr: "TestAllTypes{single_value: false}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_value { bool_value: false } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { bool_value: false } } } } } @@ -1885,7 +1868,7 @@ section { test { name: "literal_empty" expr: "google.protobuf.Value{struct_value: {}}" - value { map_value: { } } + value { map_value: {} } } test { name: "var" @@ -1896,9 +1879,11 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.Value] - { struct_value { + value { + value { + object_value { + [type.googleapis.com/google.protobuf.Value] { + struct_value { fields { key: "x" value { null_value: NULL_VALUE } @@ -1907,8 +1892,11 @@ section { key: "y" value { bool_value: false } } - } } - } } } + } + } + } + } + } } value { map_value { @@ -1929,8 +1917,9 @@ section { expr: "TestAllTypes{single_value: {'un': 1.0, 'deux': 2.0}}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_value { struct_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { + single_value { + struct_value { fields { key: "un" value { number_value: 1.0 } @@ -1939,7 +1928,9 @@ section { key: "deux" value { number_value: 2.0 } } - } } } + } + } + } } } } @@ -1949,8 +1940,7 @@ section { expr: "TestAllTypes{single_value: {}}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_value { struct_value: { } } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { struct_value: {} } } } } } @@ -1971,7 +1961,7 @@ section { name: "field_read_proto2_empty" container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: {}}.single_value" - value { map_value: { } } + value { map_value: {} } } test { name: "field_assign_proto3" @@ -1979,8 +1969,9 @@ section { expr: "TestAllTypes{single_value: {'un': 1.0, 'deux': 2.0}}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_value { struct_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_value { + struct_value { fields { key: "un" value { number_value: 1.0 } @@ -1989,7 +1980,9 @@ section { key: "deux" value { number_value: 2.0 } } - } } } + } + } + } } } } @@ -1999,8 +1992,7 @@ section { expr: "TestAllTypes{single_value: {}}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_value { struct_value: { } } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { struct_value: {} } } } } } @@ -2021,7 +2013,7 @@ section { name: "field_read_proto3_empty" container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: {}}.single_value" - value { map_value: { } } + value { map_value: {} } } } section { @@ -2048,7 +2040,7 @@ section { test { name: "literal_empty" expr: "google.protobuf.Value{list_value: []}" - value { list_value: { } } + value { list_value: {} } } test { name: "var" @@ -2059,14 +2051,19 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.Value] - { list_value { + value { + value { + object_value { + [type.googleapis.com/google.protobuf.Value] { + list_value { values { number_value: 1.0 } values { bool_value: true } values { string_value: "hi" } - } } - } } } + } + } + } + } + } } value { list_value { @@ -2082,11 +2079,14 @@ section { expr: "TestAllTypes{single_value: ['un', 1.0]}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_value { list_value { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { + single_value { + list_value { values { string_value: "un" } values { number_value: 1.0 } - } } } + } + } + } } } } @@ -2096,8 +2096,7 @@ section { expr: "TestAllTypes{single_value: []}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_value { list_value: { } } } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_value { list_value: {} } } } } } @@ -2116,7 +2115,7 @@ section { name: "field_read_proto2_empty" container: "cel.expr.conformance.proto2" expr: "TestAllTypes{single_value: []}.single_value" - value { list_value: { } } + value { list_value: {} } } test { name: "field_assign_proto3" @@ -2124,11 +2123,14 @@ section { expr: "TestAllTypes{single_value: ['un', 1.0]}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_value { list_value { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { + single_value { + list_value { values { string_value: "un" } values { number_value: 1.0 } - } } } + } + } + } } } } @@ -2138,8 +2140,7 @@ section { expr: "TestAllTypes{single_value: []}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_value { list_value: { } } } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_value { list_value: {} } } } } } @@ -2158,7 +2159,7 @@ section { name: "field_read_proto3_empty" container: "cel.expr.conformance.proto3" expr: "TestAllTypes{single_value: []}.single_value" - value { list_value: { } } + value { list_value: {} } } } section { @@ -2169,8 +2170,7 @@ section { expr: "google.protobuf.Any{type_url: 'type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes', value: b'\\x08\\x96\\x01'}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_int32: 150 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32: 150 } } } } @@ -2198,18 +2198,20 @@ section { } bindings { key: "x" - value { value { object_value { - [type.googleapis.com/google.protobuf.Any] - { + value { + value { + object_value { + [type.googleapis.com/google.protobuf.Any] { type_url: "type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes" value: "\x08\x96\x01" } - } } } + } + } + } } value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_int32: 150 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32: 150 } } } } @@ -2219,8 +2221,7 @@ section { expr: "TestAllTypes{single_any: TestAllTypes{single_int32: 150}}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_any { type_url: "type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes" value: "\x08\x96\x01" @@ -2235,8 +2236,7 @@ section { expr: "TestAllTypes{single_any: TestAllTypes{single_int32: 150}}.single_any" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] - { single_int32: 150 } + [type.googleapis.com/cel.expr.conformance.proto2.TestAllTypes] { single_int32: 150 } } } } @@ -2246,8 +2246,7 @@ section { expr: "TestAllTypes{single_any: TestAllTypes{single_int32: 150}}" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_any { type_url: "type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes" value: "\x08\x96\x01" @@ -2262,8 +2261,7 @@ section { expr: "TestAllTypes{single_any: TestAllTypes{single_int32: 150}}.single_any" value { object_value { - [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] - { single_int32: 150 } + [type.googleapis.com/cel.expr.conformance.proto3.TestAllTypes] { single_int32: 150 } } } } diff --git a/tests/simple/testdata/string_ext.textproto b/tests/simple/testdata/string_ext.textproto index 9a92db3b..fb29c06c 100644 --- a/tests/simple/testdata/string_ext.textproto +++ b/tests/simple/testdata/string_ext.textproto @@ -45,15 +45,15 @@ section: { expr: "'tacocat'.indexOf('none') == -1" } test: { - name: "empty_index" + name: "empty_index_offset" expr: "'tacocat'.indexOf('', 3) == 3" } test: { - name: "char_index" + name: "char_index_offset" expr: "'tacocat'.indexOf('a', 3) == 5" } test: { - name: "string_index" + name: "string_index_offset" expr: "'tacocat'.indexOf('at', 3) == 5" } test: { @@ -379,443 +379,443 @@ section: { name: "format" test: { name: "no-op" - expr: '"no substitution".format([])' + expr: "\"no substitution\".format([])" value: { - string_value: 'no substitution', + string_value: "no substitution" } } test: { name: "mid-string substitution" - expr: '"str is %s and some more".format(["filler"])' + expr: "\"str is %s and some more\".format([\"filler\"])" value: { - string_value: 'str is filler and some more', + string_value: "str is filler and some more" } } test: { name: "percent escaping" - expr: '"%% and also %%".format([])' + expr: "\"%% and also %%\".format([])" value: { - string_value: '% and also %', + string_value: "% and also %" } } test: { name: "substitution inside escaped percent signs" - expr: '"%%%s%%".format(["text"])' + expr: "\"%%%s%%\".format([\"text\"])" value: { - string_value: '%text%', + string_value: "%text%" } } test: { name: "substitution with one escaped percent sign on the right" - expr: '"%s%%".format(["percent on the right"])' + expr: "\"%s%%\".format([\"percent on the right\"])" value: { - string_value: 'percent on the right%', + string_value: "percent on the right%" } } test: { name: "substitution with one escaped percent sign on the left" - expr: '"%%%s".format(["percent on the left"])' + expr: "\"%%%s\".format([\"percent on the left\"])" value: { - string_value: '%percent on the left', + string_value: "%percent on the left" } } test: { name: "multiple substitutions" - expr: '"%d %d %d, %s %s %s, %d %d %d, %s %s %s".format([1, 2, 3, "A", "B", "C", 4, 5, 6, "D", "E", "F"])' + expr: "\"%d %d %d, %s %s %s, %d %d %d, %s %s %s\".format([1, 2, 3, \"A\", \"B\", \"C\", 4, 5, 6, \"D\", \"E\", \"F\"])" value: { - string_value: '1 2 3, A B C, 4 5 6, D E F', + string_value: "1 2 3, A B C, 4 5 6, D E F" } } test: { name: "percent sign escape sequence support" - expr: '"%%escaped %s%%".format(["percent"])' + expr: "\"%%escaped %s%%\".format([\"percent\"])" value: { - string_value: '%escaped percent%', + string_value: "%escaped percent%" } } test: { name: "fixed point formatting clause" - expr: '"%.3f".format([1.2345])' + expr: "\"%.3f\".format([1.2345])" value: { - string_value: '1.234', + string_value: "1.234" } } test: { name: "binary formatting clause" - expr: '"this is 5 in binary: %b".format([5])' + expr: "\"this is 5 in binary: %b\".format([5])" value: { - string_value: 'this is 5 in binary: 101', + string_value: "this is 5 in binary: 101" } } test: { name: "uint support for binary formatting" - expr: '"unsigned 64 in binary: %b".format([uint(64)])' + expr: "\"unsigned 64 in binary: %b\".format([uint(64)])" value: { - string_value: 'unsigned 64 in binary: 1000000', + string_value: "unsigned 64 in binary: 1000000" } } test: { name: "bool support for binary formatting" - expr: '"bit set from bool: %b".format([true])' + expr: "\"bit set from bool: %b\".format([true])" value: { - string_value: 'bit set from bool: 1', + string_value: "bit set from bool: 1" } } test: { name: "octal formatting clause" - expr: '"%o".format([11])' + expr: "\"%o\".format([11])" value: { - string_value: '13', + string_value: "13" } } test: { name: "uint support for octal formatting clause" - expr: '"this is an unsigned octal: %o".format([uint(65535)])' + expr: "\"this is an unsigned octal: %o\".format([uint(65535)])" value: { - string_value: 'this is an unsigned octal: 177777', + string_value: "this is an unsigned octal: 177777" } } test: { name: "lowercase hexadecimal formatting clause" - expr: '"%x is 20 in hexadecimal".format([30])' + expr: "\"%x is 20 in hexadecimal\".format([30])" value: { - string_value: '1e is 20 in hexadecimal', + string_value: "1e is 20 in hexadecimal" } } test: { name: "uppercase hexadecimal formatting clause" - expr: '"%X is 20 in hexadecimal".format([30])' + expr: "\"%X is 20 in hexadecimal\".format([30])" value: { - string_value: '1E is 20 in hexadecimal', + string_value: "1E is 20 in hexadecimal" } } test: { name: "unsigned support for hexadecimal formatting clause" - expr: '"%X is 6000 in hexadecimal".format([uint(6000)])' + expr: "\"%X is 6000 in hexadecimal\".format([uint(6000)])" value: { - string_value: '1770 is 6000 in hexadecimal', + string_value: "1770 is 6000 in hexadecimal" } } test: { name: "string support with hexadecimal formatting clause" - expr: '"%x".format(["Hello world!"])' + expr: "\"%x\".format([\"Hello world!\"])" value: { - string_value: '48656c6c6f20776f726c6421', + string_value: "48656c6c6f20776f726c6421" } } test: { name: "string support with uppercase hexadecimal formatting clause" - expr: '"%X".format(["Hello world!"])' + expr: "\"%X\".format([\"Hello world!\"])" value: { - string_value: '48656C6C6F20776F726C6421', + string_value: "48656C6C6F20776F726C6421" } } test: { name: "byte support with hexadecimal formatting clause" - expr: '"%x".format([b"byte string"])' + expr: "\"%x\".format([b\"byte string\"])" value: { - string_value: '6279746520737472696e67', + string_value: "6279746520737472696e67" } } test: { name: "byte support with uppercase hexadecimal formatting clause" - expr: '"%X".format([b"byte string"])' + expr: "\"%X\".format([b\"byte string\"])" value: { - string_value: '6279746520737472696E67', + string_value: "6279746520737472696E67" } } test: { name: "scientific notation formatting clause" - expr: '"%.6e".format([1052.032911275])' + expr: "\"%.6e\".format([1052.032911275])" value: { - string_value: '1.052033e+03', + string_value: "1.052033e+03" } } test: { name: "default precision for fixed-point clause" - expr: '"%f".format([2.71828])' + expr: "\"%f\".format([2.71828])" value: { - string_value: '2.718280', + string_value: "2.718280" } } test: { name: "default precision for fixed-point clause with int" - expr: '"%f".format([2])' + expr: "\"%f\".format([2])" value: { - string_value: '2.000000', + string_value: "2.000000" } } test: { name: "default precision for fixed-point clause with uint" - expr: '"%f".format([3u])' + expr: "\"%f\".format([3u])" value: { - string_value: '3.000000', + string_value: "3.000000" } } test: { name: "default precision for scientific notation" - expr: '"%e".format([2.71828])' + expr: "\"%e\".format([2.71828])" value: { - string_value: '2.718280e+00', + string_value: "2.718280e+00" } } test: { name: "default precision for scientific notation with int" - expr: '"%e".format([2])' + expr: "\"%e\".format([2])" value: { - string_value: '2.000000e+00', + string_value: "2.000000e+00" } } test: { name: "default precision for scientific notation with uint" - expr: '"%e".format([3u])' + expr: "\"%e\".format([3u])" value: { - string_value: '3.000000e+00', + string_value: "3.000000e+00" } } test: { name: "NaN support for scientific notation" - expr: '"%e".format([double("NaN")])' + expr: "\"%e\".format([double(\"NaN\")])" value: { - string_value: 'NaN', + string_value: "NaN" } } test: { name: "positive infinity support for scientific notation" - expr: '"%e".format([double("Infinity")])' + expr: "\"%e\".format([double(\"Infinity\")])" value: { - string_value: 'Infinity', + string_value: "Infinity" } } test: { name: "negative infinity support for scientific notation" - expr: '"%e".format([double("-Infinity")])' + expr: "\"%e\".format([double(\"-Infinity\")])" value: { - string_value: '-Infinity', + string_value: "-Infinity" } } test: { name: "NaN support for decimal" - expr: '"%d".format([double("NaN")])' + expr: "\"%d\".format([double(\"NaN\")])" value: { - string_value: 'NaN', + string_value: "NaN" } } test: { name: "positive infinity support for decimal" - expr: '"%d".format([double("Infinity")])' + expr: "\"%d\".format([double(\"Infinity\")])" value: { - string_value: 'Infinity', + string_value: "Infinity" } } test: { name: "negative infinity support for decimal" - expr: '"%d".format([double("-Infinity")])' + expr: "\"%d\".format([double(\"-Infinity\")])" value: { - string_value: '-Infinity', + string_value: "-Infinity" } } test: { name: "NaN support for fixed-point" - expr: '"%f".format([double("NaN")])' + expr: "\"%f\".format([double(\"NaN\")])" value: { - string_value: 'NaN', + string_value: "NaN" } } test: { name: "positive infinity support for fixed-point" - expr: '"%f".format([double("Infinity")])' + expr: "\"%f\".format([double(\"Infinity\")])" value: { - string_value: 'Infinity', + string_value: "Infinity" } } test: { name: "negative infinity support for fixed-point" - expr: '"%f".format([double("-Infinity")])' + expr: "\"%f\".format([double(\"-Infinity\")])" value: { - string_value: '-Infinity', + string_value: "-Infinity" } } test: { name: "uint support for decimal clause" - expr: '"%d".format([uint(64)])' + expr: "\"%d\".format([uint(64)])" value: { - string_value: '64', + string_value: "64" } } test: { name: "null support for string" - expr: '"%s".format([null])' + expr: "\"%s\".format([null])" value: { - string_value: 'null', + string_value: "null" } } test: { name: "int support for string" - expr: '"%s".format([999999999999])' + expr: "\"%s\".format([999999999999])" value: { - string_value: '999999999999', + string_value: "999999999999" } } test: { name: "bytes support for string" - expr: '"%s".format([b"xyz"])' + expr: "\"%s\".format([b\"xyz\"])" value: { - string_value: 'xyz', + string_value: "xyz" } } test: { name: "type() support for string" - expr: '"%s".format([type("test string")])' + expr: "\"%s\".format([type(\"test string\")])" value: { - string_value: 'string', + string_value: "string" } } test: { name: "timestamp support for string" - expr: '"%s".format([timestamp("2023-02-03T23:31:20+00:00")])' + expr: "\"%s\".format([timestamp(\"2023-02-03T23:31:20+00:00\")])" value: { - string_value: '2023-02-03T23:31:20Z', + string_value: "2023-02-03T23:31:20Z" } } test: { name: "duration support for string" - expr: '"%s".format([duration("1h45m47s")])' + expr: "\"%s\".format([duration(\"1h45m47s\")])" value: { - string_value: '6347s', + string_value: "6347s" } } test: { name: "list support for string" - expr: '"%s".format([["abc", 3.14, null, [9, 8, 7, 6], timestamp("2023-02-03T23:31:20Z")]])' + expr: "\"%s\".format([[\"abc\", 3.14, null, [9, 8, 7, 6], timestamp(\"2023-02-03T23:31:20Z\")]])" value: { - string_value: '[abc, 3.14, null, [9, 8, 7, 6], 2023-02-03T23:31:20Z]', + string_value: "[abc, 3.14, null, [9, 8, 7, 6], 2023-02-03T23:31:20Z]" } } test: { name: "map support for string" - expr: '"%s".format([{"key1": b"xyz", "key5": null, "key2": duration("2h"), "key4": true, "key3": 2.71828}])' + expr: "\"%s\".format([{\"key1\": b\"xyz\", \"key5\": null, \"key2\": duration(\"2h\"), \"key4\": true, \"key3\": 2.71828}])" value: { - string_value: '{key1: xyz, key2: 7200s, key3: 2.71828, key4: true, key5: null}', + string_value: "{key1: xyz, key2: 7200s, key3: 2.71828, key4: true, key5: null}" } } test: { name: "map support (all key types)" - expr: '"%s".format([{1: "value1", uint(2): "value2", true: double("NaN")}])' + expr: "\"%s\".format([{1: \"value1\", uint(2): \"value2\", true: double(\"NaN\")}])" value: { - string_value: '{1: value1, 2: value2, true: NaN}', + string_value: "{1: value1, 2: value2, true: NaN}" } } test: { name: "boolean support for %s" - expr: '"%s, %s".format([true, false])' + expr: "\"%s, %s\".format([true, false])" value: { - string_value: 'true, false', + string_value: "true, false" } } test: { - name: "dyntype support for string formatting clause" - expr: '"%s".format([dyn("a string")])' - value: { - string_value: 'a string', - } + name: "dyntype support for string formatting clause" + expr: "\"%s\".format([dyn(\"a string\")])" + value: { + string_value: "a string" + } } test: { name: "dyntype support for numbers with string formatting clause" - expr: '"%s, %s".format([dyn(32), dyn(56.8)])' + expr: "\"%s, %s\".format([dyn(32), dyn(56.8)])" value: { - string_value: '32, 56.8', + string_value: "32, 56.8" } } test: { name: "dyntype support for integer formatting clause" - expr: '"%d".format([dyn(128)])' + expr: "\"%d\".format([dyn(128)])" value: { - string_value: '128', + string_value: "128" } } test: { name: "dyntype support for integer formatting clause (unsigned)" - expr: '"%d".format([dyn(256u)])' + expr: "\"%d\".format([dyn(256u)])" value: { - string_value: '256', + string_value: "256" } } test: { name: "dyntype support for hex formatting clause" - expr: '"%x".format([dyn(22)])' + expr: "\"%x\".format([dyn(22)])" value: { - string_value: '16', + string_value: "16" } } test: { name: "dyntype support for hex formatting clause (uppercase)" - expr: '"%X".format([dyn(26)])' + expr: "\"%X\".format([dyn(26)])" value: { - string_value: '1A', + string_value: "1A" } } test: { name: "dyntype support for unsigned hex formatting clause" - expr: '"%x".format([dyn(500u)])' + expr: "\"%x\".format([dyn(500u)])" value: { - string_value: '1f4', + string_value: "1f4" } } test: { name: "dyntype support for fixed-point formatting clause" - expr: '"%.3f".format([dyn(4.5)])' + expr: "\"%.3f\".format([dyn(4.5)])" value: { - string_value: '4.500', + string_value: "4.500" } } test: { name: "dyntype support for scientific notation" - expr: '"%e".format([dyn(2.71828)])' + expr: "\"%e\".format([dyn(2.71828)])" value: { - string_value: '2.718280e+00', + string_value: "2.718280e+00" } } test: { name: "dyntype NaN/infinity support" - expr: '"%s".format([[double("NaN"), double("Infinity"), double("-Infinity")]])' + expr: "\"%s\".format([[double(\"NaN\"), double(\"Infinity\"), double(\"-Infinity\")]])" value: { - string_value: '[NaN, Infinity, -Infinity]', + string_value: "[NaN, Infinity, -Infinity]" } } test: { name: "dyntype support for timestamp" - expr: '"%s".format([dyn(timestamp("2009-11-10T23:00:00Z"))])' + expr: "\"%s\".format([dyn(timestamp(\"2009-11-10T23:00:00Z\"))])" value: { - string_value: '2009-11-10T23:00:00Z', + string_value: "2009-11-10T23:00:00Z" } } test: { name: "dyntype support for duration" - expr: '"%s".format([dyn(duration("8747s"))])' + expr: "\"%s\".format([dyn(duration(\"8747s\"))])" value: { - string_value: '8747s', + string_value: "8747s" } } test: { name: "dyntype support for lists" - expr: '"%s".format([dyn([6, 4.2, "a string"])])' + expr: "\"%s\".format([dyn([6, 4.2, \"a string\"])])" value: { - string_value: '[6, 4.2, a string]', + string_value: "[6, 4.2, a string]" } } test: { name: "dyntype support for maps" - expr: '"%s".format([{"strKey":"x", 6:duration("422s"), true:42}])' + expr: "\"%s\".format([{\"strKey\":\"x\", 6:duration(\"422s\"), true:42}])" value: { - string_value: '{6: 422s, strKey: x, true: 42}', + string_value: "{6: 422s, strKey: x, true: 42}" } } test: { name: "string substitution in a string variable" - expr: 'str_var.format(["filler"])' + expr: "str_var.format([\"filler\"])" type_env: { - name: "str_var", + name: "str_var" ident: { type: { primitive: STRING } } } bindings: { @@ -823,14 +823,14 @@ section: { value: { value: { string_value: "%s" } } } value: { - string_value: 'filler', + string_value: "filler" } } test: { name: "multiple substitutions in a string variable" - expr: 'str_var.format([1, 2, 3, "A", "B", "C", 4, 5, 6, "D", "E", "F"])' + expr: "str_var.format([1, 2, 3, \"A\", \"B\", \"C\", 4, 5, 6, \"D\", \"E\", \"F\"])" type_env: { - name: "str_var", + name: "str_var" ident: { type: { primitive: STRING } } } bindings: { @@ -838,14 +838,14 @@ section: { value: { value: { string_value: "%d %d %d, %s %s %s, %d %d %d, %s %s %s" } } } value: { - string_value: '1 2 3, A B C, 4 5 6, D E F', + string_value: "1 2 3, A B C, 4 5 6, D E F" } } test: { name: "substitution inside escaped percent signs in a string variable" - expr: 'str_var.format(["text"])' + expr: "str_var.format([\"text\"])" type_env: { - name: "str_var", + name: "str_var" ident: { type: { primitive: STRING } } } bindings: { @@ -853,14 +853,14 @@ section: { value: { value: { string_value: "%%%s%%" } } } value: { - string_value: '%text%', + string_value: "%text%" } } test: { name: "fixed point formatting clause in a string variable" - expr: 'str_var.format([1.2345])' + expr: "str_var.format([1.2345])" type_env: { - name: "str_var", + name: "str_var" ident: { type: { primitive: STRING } } } bindings: { @@ -868,14 +868,14 @@ section: { value: { value: { string_value: "%.3f" } } } value: { - string_value: '1.234', + string_value: "1.234" } } test: { name: "binary formatting clause in a string variable" - expr: 'str_var.format([5])' + expr: "str_var.format([5])" type_env: { - name: "str_var", + name: "str_var" ident: { type: { primitive: STRING } } } bindings: { @@ -883,14 +883,14 @@ section: { value: { value: { string_value: "%b" } } } value: { - string_value: '101', + string_value: "101" } } test: { name: "scientific notation formatting clause in a string variable" - expr: 'str_var.format([1052.032911275])' + expr: "str_var.format([1052.032911275])" type_env: { - name: "str_var", + name: "str_var" ident: { type: { primitive: STRING } } } bindings: { @@ -898,14 +898,14 @@ section: { value: { value: { string_value: "%.6e" } } } value: { - string_value: '1.052033e+03', + string_value: "1.052033e+03" } } test: { name: "default precision for fixed-point clause in a string variable" - expr: 'str_var.format([2.71828])' + expr: "str_var.format([2.71828])" type_env: { - name: "str_var", + name: "str_var" ident: { type: { primitive: STRING } } } bindings: { @@ -913,77 +913,77 @@ section: { value: { value: { string_value: "%f" } } } value: { - string_value: '2.718280', + string_value: "2.718280" } } -test: { + test: { name: "format_%f_insignificant_zeroes_removed" - expr: '"%.0f".format([123.000000])' + expr: "\"%.0f\".format([123.000000])" value: { - string_value: '123', + string_value: "123" } } test: { name: "format_%f_positive_round_to_whole_number" - expr: '"%.0f".format([3.5001])' + expr: "\"%.0f\".format([3.5001])" value: { - string_value: '4', + string_value: "4" } } test: { name: "format_%f_negative_truncate_to_whole_number" - expr: '"%.0f".format([3.4999])' + expr: "\"%.0f\".format([3.4999])" value: { - string_value: '3', + string_value: "3" } } test: { name: "format_%f_halfway_round_up_to_nearest_even" - expr: '"%.0f".format([1.5])' + expr: "\"%.0f\".format([1.5])" value: { - string_value: '2', + string_value: "2" } } test: { name: "format_%f_halfway_truncate_to_nearest_even" - expr: '"%.0f".format([2.5])' + expr: "\"%.0f\".format([2.5])" value: { - string_value: '2', + string_value: "2" } } test: { name: "format_%f_positive_round_up" - expr: '"%.3f".format([123.4999])' + expr: "\"%.3f\".format([123.4999])" value: { - string_value: '123.500', + string_value: "123.500" } } test: { name: "format_%f_positive_round_down" - expr: '"%.3f".format([123.4994])' + expr: "\"%.3f\".format([123.4994])" value: { - string_value: '123.499', + string_value: "123.499" } } test: { name: "format_%f_negative_round_up" - expr: '"%.3f".format([-123.4999])' + expr: "\"%.3f\".format([-123.4999])" value: { - string_value: '-123.500', + string_value: "-123.500" } } test: { name: "format_%f_negative_round_down" - expr: '"%.3f".format([-123.4994])' + expr: "\"%.3f\".format([-123.4994])" value: { - string_value: '-123.499', + string_value: "-123.499" } } test: { name: "format_%f_zero_padding" - expr: '"%.5f".format([-1.2])' + expr: "\"%.5f\".format([-1.2])" value: { - string_value: '-1.20000', + string_value: "-1.20000" } } } @@ -991,171 +991,171 @@ section: { name: "format_errors" test: { name: "unrecognized formatting clause" - expr: '"%a".format([1])' + expr: "\"%a\".format([1])" disable_check: true eval_error: { errors: { - message: 'could not parse formatting clause: unrecognized formatting clause "a"' + message: "could not parse formatting clause: unrecognized formatting clause \"a\"" } } } test: { name: "out of bounds arg index" - expr: '"%d %d %d".format([0, 1])' + expr: "\"%d %d %d\".format([0, 1])" disable_check: true eval_error: { errors: { - message: 'index 2 out of range' + message: "index 2 out of range" } } } test: { name: "string substitution is not allowed with binary clause" - expr: '"string is %b".format(["abc"])' + expr: "\"string is %b\".format([\"abc\"])" disable_check: true eval_error: { errors: { - message: 'error during formatting: only integers and bools can be formatted as binary, was given string' + message: "error during formatting: only integers and bools can be formatted as binary, was given string" } } } test: { name: "duration substitution not allowed with decimal clause" - expr: '"%d".format([duration("30m2s")])' + expr: "\"%d\".format([duration(\"30m2s\")])" disable_check: true eval_error: { errors: { - message: 'error during formatting: decimal clause can only be used on integers, was given google.protobuf.Duration' + message: "error during formatting: decimal clause can only be used on integers, was given google.protobuf.Duration" } } } test: { name: "string substitution not allowed with octal clause" - expr: '"octal: %o".format(["a string"])' + expr: "\"octal: %o\".format([\"a string\"])" disable_check: true eval_error: { errors: { - message: 'error during formatting: octal clause can only be used on integers, was given string' + message: "error during formatting: octal clause can only be used on integers, was given string" } } } test: { name: "double substitution not allowed with hex clause" - expr: '"double is %x".format([0.5])' + expr: "\"double is %x\".format([0.5])" disable_check: true eval_error: { errors: { - message: 'error during formatting: only integers, byte buffers, and strings can be formatted as hex, was given double' + message: "error during formatting: only integers, byte buffers, and strings can be formatted as hex, was given double" } } } test: { name: "uppercase not allowed for scientific clause" - expr: '"double is %E".format([0.5])' + expr: "\"double is %E\".format([0.5])" disable_check: true eval_error: { errors: { - message: 'could not parse formatting clause: unrecognized formatting clause "E"' + message: "could not parse formatting clause: unrecognized formatting clause \"E\"" } } } test: { name: "object not allowed" - expr: '"object is %s".format([cel.expr.conformance.proto3.TestAllTypes{}])' + expr: "\"object is %s\".format([cel.expr.conformance.proto3.TestAllTypes{}])" disable_check: true eval_error: { errors: { - message: 'error during formatting: string clause can only be used on strings, bools, bytes, ints, doubles, maps, lists, types, durations, and timestamps, was given cel.expr.conformance.proto3.TestAllTypes' + message: "error during formatting: string clause can only be used on strings, bools, bytes, ints, doubles, maps, lists, types, durations, and timestamps, was given cel.expr.conformance.proto3.TestAllTypes" } } } test: { name: "object inside list" - expr: '"%s".format([[1, 2, cel.expr.conformance.proto3.TestAllTypes{}]])' + expr: "\"%s\".format([[1, 2, cel.expr.conformance.proto3.TestAllTypes{}]])" disable_check: true eval_error: { errors: { - message: 'error during formatting: string clause can only be used on strings, bools, bytes, ints, doubles, maps, lists, types, durations, and timestamps, was given cel.expr.conformance.proto3.TestAllTypes' + message: "error during formatting: string clause can only be used on strings, bools, bytes, ints, doubles, maps, lists, types, durations, and timestamps, was given cel.expr.conformance.proto3.TestAllTypes" } } } test: { name: "object inside map" - expr: '"%s".format([{1: "a", 2: cel.expr.conformance.proto3.TestAllTypes{}}])' + expr: "\"%s\".format([{1: \"a\", 2: cel.expr.conformance.proto3.TestAllTypes{}}])" disable_check: true eval_error: { errors: { - message: 'error during formatting: string clause can only be used on strings, bools, bytes, ints, doubles, maps, lists, types, durations, and timestamps, was given cel.expr.conformance.proto3.TestAllTypes' + message: "error during formatting: string clause can only be used on strings, bools, bytes, ints, doubles, maps, lists, types, durations, and timestamps, was given cel.expr.conformance.proto3.TestAllTypes" } } } test: { name: "null not allowed for %d" - expr: '"null: %d".format([null])' + expr: "\"null: %d\".format([null])" disable_check: true eval_error: { errors: { - message: 'error during formatting: decimal clause can only be used on integers, was given null_type' + message: "error during formatting: decimal clause can only be used on integers, was given null_type" } } } test: { name: "null not allowed for %e" - expr: '"null: %e".format([null])' + expr: "\"null: %e\".format([null])" disable_check: true eval_error: { errors: { - message: 'error during formatting: scientific clause can only be used on doubles, was given null_type' + message: "error during formatting: scientific clause can only be used on doubles, was given null_type" } } } test: { name: "null not allowed for %f" - expr: '"null: %f".format([null])' + expr: "\"null: %f\".format([null])" disable_check: true eval_error: { errors: { - message: 'error during formatting: fixed-point clause can only be used on doubles, was given null_type' + message: "error during formatting: fixed-point clause can only be used on doubles, was given null_type" } } } test: { name: "null not allowed for %x" - expr: '"null: %x".format([null])' + expr: "\"null: %x\".format([null])" disable_check: true eval_error: { errors: { - message: 'error during formatting: only integers, byte buffers, and strings can be formatted as hex, was given null_type' + message: "error during formatting: only integers, byte buffers, and strings can be formatted as hex, was given null_type" } } } test: { name: "null not allowed for %X" - expr: '"null: %X".format([null])' + expr: "\"null: %X\".format([null])" disable_check: true eval_error: { errors: { - message: 'error during formatting: only integers, byte buffers, and strings can be formatted as hex, was given null_type' + message: "error during formatting: only integers, byte buffers, and strings can be formatted as hex, was given null_type" } } } test: { name: "null not allowed for %b" - expr: '"null: %b".format([null])' + expr: "\"null: %b\".format([null])" disable_check: true eval_error: { errors: { - message: 'error during formatting: only integers and bools can be formatted as binary, was given null_type' + message: "error during formatting: only integers and bools can be formatted as binary, was given null_type" } } } test: { name: "null not allowed for %o" - expr: '"null: %o".format([null])' + expr: "\"null: %o\".format([null])" disable_check: true eval_error: { errors: { - message: 'error during formatting: octal clause can only be used on integers, was given null_type' + message: "error during formatting: octal clause can only be used on integers, was given null_type" } } }