From e3ee015854adc5c341c7942189bf91ef54495d70 Mon Sep 17 00:00:00 2001 From: Dmitri Plotnikov Date: Tue, 10 Nov 2026 17:47:18 -0800 Subject: [PATCH] [cel-expr-python] Make testCelEquals Any comparison runtime-agnostic. `cel.Value` equality (`==`) delegates to Python protobuf `Message.__eq__`, whose `google.protobuf.Any` handling varies across protobuf runtimes. Compare `cel_msg1 == cel_msg2` against `msg1 == msg2` rather than assuming `!=`. PiperOrigin-RevId: 1018701422 --- cel_expr_python/cel_test.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cel_expr_python/cel_test.py b/cel_expr_python/cel_test.py index 56d8b21..5ce1e00 100644 --- a/cel_expr_python/cel_test.py +++ b/cel_expr_python/cel_test.py @@ -862,8 +862,9 @@ def testCelEquals(self): self.assertTrue(self._eval("{'a': 1}").equals(self._eval("{'a': 1.0}"))) self.assertFalse(self._eval("[1, 2]").equals(self._eval("[1, 3]"))) - # Proto comparisons: == delegates to Python protobuf Message.__eq__ (raw - # Any bytes), whereas equals() uses CEL MessageEquals (unpacks Any). + # Proto comparisons: == delegates to Python protobuf Message.__eq__ (whose + # Any handling varies across protobuf runtimes), whereas equals() uses CEL + # MessageEquals (unpacks Any). msg1 = test_all_types_pb.TestAllTypes() msg1.single_any.Pack( test_all_types_pb.TestAllTypes(single_int32=1, single_string="a") @@ -877,7 +878,7 @@ def testCelEquals(self): cel_msg1 = self._eval("var_msg", {"var_msg": msg1}) cel_msg2 = self._eval("var_msg", {"var_msg": msg2}) self.assertEqual(cel_msg1, msg1) - self.assertNotEqual(cel_msg1, cel_msg2) + self.assertEqual(cel_msg1 == cel_msg2, msg1 == msg2) self.assertTrue(cel_msg1.equals(cel_msg2)) def testTypeInitSignature(self):