Skip to content

Commit 8cd5dd0

Browse files
committed
Fix unexpected attribute error
1 parent ca20945 commit 8cd5dd0

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

apitools/base/protorpclite/protojson.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,10 @@ def decode_field(self, field, value):
333333

334334
elif (isinstance(field, messages.MessageField) and
335335
issubclass(field.type, messages.Message)):
336-
return self.__decode_dictionary(field.type, value)
336+
try:
337+
return self.__decode_dictionary(field.type, value)
338+
except AttributeError as err:
339+
raise messages.DecodeError(err)
337340

338341
elif (isinstance(field, messages.FloatField) and
339342
isinstance(value, (six.integer_types, six.string_types))):

apitools/base/protorpclite/protojson_test.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -374,14 +374,21 @@ def testDecodeInvalidDateTime(self):
374374
MyMessage, '{"a_datetime": "invalid"}')
375375

376376
def testDecodeInvalidMessage(self):
377-
encoded = """{
378-
"a_nested_datetime": {
379-
"nested_dt_value": "invalid"
380-
}
381-
}
382-
"""
383-
self.assertRaises(messages.DecodeError, protojson.decode_message,
384-
MyMessage, encoded)
377+
for encoded in (
378+
"""{
379+
"a_nested_datetime": {
380+
"nested_dt_value": "invalid"
381+
}
382+
}
383+
""",
384+
"""{
385+
"a_nested_datetime": [{
386+
"nested_dt_value": "2012-09-30T15:31:50.262"
387+
}]
388+
}
389+
"""):
390+
self.assertRaises(messages.DecodeError, protojson.decode_message,
391+
MyMessage, encoded)
385392

386393
def testEncodeDateTime(self):
387394
for datetime_string, datetime_vals in (

0 commit comments

Comments
 (0)