| Index: recipe_engine/third_party/google/protobuf/internal/json_format_test.py
|
| diff --git a/recipe_engine/third_party/google/protobuf/internal/json_format_test.py b/recipe_engine/third_party/google/protobuf/internal/json_format_test.py
|
| index bdc9f49a4071ad077807f1db56f88149999a4998..a5ee8ace0e454616768202b1460fc28868cc6611 100644
|
| --- a/recipe_engine/third_party/google/protobuf/internal/json_format_test.py
|
| +++ b/recipe_engine/third_party/google/protobuf/internal/json_format_test.py
|
| @@ -247,6 +247,23 @@ class JsonFormatTest(JsonFormatBase):
|
| parsed_message = json_format_proto3_pb2.TestOneof()
|
| self.CheckParseBack(message, parsed_message)
|
|
|
| + def testSurrogates(self):
|
| + # Test correct surrogate handling.
|
| + message = json_format_proto3_pb2.TestMessage()
|
| + json_format.Parse('{"stringValue": "\\uD83D\\uDE01"}', message)
|
| + self.assertEqual(message.string_value,
|
| + b'\xF0\x9F\x98\x81'.decode('utf-8', 'strict'))
|
| +
|
| + # Error case: unpaired high surrogate.
|
| + self.CheckError(
|
| + '{"stringValue": "\\uD83D"}',
|
| + r'Invalid \\uXXXX escape|Unpaired.*surrogate')
|
| +
|
| + # Unpaired low surrogate.
|
| + self.CheckError(
|
| + '{"stringValue": "\\uDE01"}',
|
| + r'Invalid \\uXXXX escape|Unpaired.*surrogate')
|
| +
|
| def testTimestampMessage(self):
|
| message = json_format_proto3_pb2.TestTimestamp()
|
| message.value.seconds = 0
|
| @@ -458,6 +475,22 @@ class JsonFormatTest(JsonFormatBase):
|
| '}\n'))
|
| parsed_message = json_format_proto3_pb2.TestAny()
|
| self.CheckParseBack(message, parsed_message)
|
| + # Must print @type first
|
| + test_message = json_format_proto3_pb2.TestMessage(
|
| + bool_value=True,
|
| + int32_value=20,
|
| + int64_value=-20,
|
| + uint32_value=20,
|
| + uint64_value=20,
|
| + double_value=3.14,
|
| + string_value='foo')
|
| + message.Clear()
|
| + message.value.Pack(test_message)
|
| + self.assertEqual(
|
| + json_format.MessageToJson(message, False)[0:68],
|
| + '{\n'
|
| + ' "value": {\n'
|
| + ' "@type": "type.googleapis.com/proto3.TestMessage"')
|
|
|
| def testWellKnownInAnyMessage(self):
|
| message = any_pb2.Any()
|
| @@ -606,6 +639,19 @@ class JsonFormatTest(JsonFormatBase):
|
| 'Message type "proto3.TestMessage" has no field named '
|
| '"unknownName".')
|
|
|
| + def testIgnoreUnknownField(self):
|
| + text = '{"unknownName": 1}'
|
| + parsed_message = json_format_proto3_pb2.TestMessage()
|
| + json_format.Parse(text, parsed_message, ignore_unknown_fields=True)
|
| + text = ('{\n'
|
| + ' "repeatedValue": [ {\n'
|
| + ' "@type": "type.googleapis.com/proto3.MessageType",\n'
|
| + ' "unknownName": 1\n'
|
| + ' }]\n'
|
| + '}\n')
|
| + parsed_message = json_format_proto3_pb2.TestAny()
|
| + json_format.Parse(text, parsed_message, ignore_unknown_fields=True)
|
| +
|
| def testDuplicateField(self):
|
| # Duplicate key check is not supported for python2.6
|
| if sys.version_info < (2, 7):
|
|
|