You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
5.8 KiB
145 lines
5.8 KiB
diff --git a/apitools/base/protorpclite/messages.py b/apitools/base/protorpclite/messages.py
|
|
index 0d564e9..5b2346a 100644
|
|
--- a/apitools/base/protorpclite/messages.py
|
|
+++ b/apitools/base/protorpclite/messages.py
|
|
@@ -757,6 +757,7 @@ class Message(six.with_metaclass(_MessageClass, object)):
|
|
order.check_initialized()
|
|
|
|
"""
|
|
+ __hash__ = None
|
|
|
|
def __init__(self, **kwargs):
|
|
"""Initialize internal messages state.
|
|
@@ -1079,9 +1080,9 @@ class FieldList(list):
|
|
if not field_instance.repeated:
|
|
raise FieldDefinitionError(
|
|
'FieldList may only accept repeated fields')
|
|
- self.__field = field_instance
|
|
- self.__field.validate(sequence)
|
|
- list.__init__(self, sequence)
|
|
+ self._field = field_instance
|
|
+ self._field.validate(sequence)
|
|
+ super().__init__(sequence)
|
|
|
|
def __getstate__(self):
|
|
"""Enable pickling.
|
|
@@ -1098,10 +1099,10 @@ class FieldList(list):
|
|
None.
|
|
|
|
"""
|
|
- message_class = self.__field.message_definition()
|
|
+ message_class = self._field.message_definition()
|
|
if message_class is None:
|
|
- return self.__field, None, None
|
|
- return None, message_class, self.__field.number
|
|
+ return self._field, None, None
|
|
+ return None, message_class, self._field.number
|
|
|
|
def __setstate__(self, state):
|
|
"""Enable unpickling.
|
|
@@ -1115,41 +1116,43 @@ class FieldList(list):
|
|
"""
|
|
field_instance, message_class, number = state
|
|
if field_instance is None:
|
|
- self.__field = message_class.field_by_number(number)
|
|
+ self._field = message_class.field_by_number(number)
|
|
else:
|
|
- self.__field = field_instance
|
|
+ self._field = field_instance
|
|
|
|
@property
|
|
def field(self):
|
|
"""Field that validates list."""
|
|
- return self.__field
|
|
+ return self._field
|
|
|
|
def __setslice__(self, i, j, sequence):
|
|
"""Validate slice assignment to list."""
|
|
- self.__field.validate(sequence)
|
|
+ self._field.validate(sequence)
|
|
list.__setslice__(self, i, j, sequence)
|
|
|
|
def __setitem__(self, index, value):
|
|
"""Validate item assignment to list."""
|
|
if isinstance(index, slice):
|
|
- self.__field.validate(value)
|
|
+ self._field.validate(value)
|
|
else:
|
|
- self.__field.validate_element(value)
|
|
+ self._field.validate_element(value)
|
|
list.__setitem__(self, index, value)
|
|
|
|
def append(self, value):
|
|
"""Validate item appending to list."""
|
|
- self.__field.validate_element(value)
|
|
+ if hasattr(self, '_field'):
|
|
+ self._field.validate_element(value)
|
|
return list.append(self, value)
|
|
|
|
def extend(self, sequence):
|
|
"""Validate extension of list."""
|
|
- self.__field.validate(sequence)
|
|
+ if hasattr(self, '_field'):
|
|
+ self._field.validate(sequence)
|
|
return list.extend(self, sequence)
|
|
|
|
def insert(self, index, value):
|
|
"""Validate item insertion to list."""
|
|
- self.__field.validate_element(value)
|
|
+ self._field.validate_element(value)
|
|
return list.insert(self, index, value)
|
|
|
|
|
|
diff --git a/apitools/base/protorpclite/messages_test.py b/apitools/base/protorpclite/messages_test.py
|
|
index 3ad75e4..1acdab3 100644
|
|
--- a/apitools/base/protorpclite/messages_test.py
|
|
+++ b/apitools/base/protorpclite/messages_test.py
|
|
@@ -508,7 +508,8 @@ class FieldListTest(test_util.TestCase):
|
|
def testPickle(self):
|
|
"""Testing pickling and unpickling of FieldList instances."""
|
|
field_list = messages.FieldList(self.integer_field, [1, 2, 3, 4, 5])
|
|
- unpickled = pickle.loads(pickle.dumps(field_list))
|
|
+ pickled = pickle.dumps(field_list)
|
|
+ unpickled = pickle.loads(pickled)
|
|
self.assertEquals(field_list, unpickled)
|
|
self.assertIsInstance(unpickled.field, messages.IntegerField)
|
|
self.assertEquals(1, unpickled.field.number)
|
|
diff --git a/apitools/base/protorpclite/protojson_test.py b/apitools/base/protorpclite/protojson_test.py
|
|
index 7a8f875..69804f5 100644
|
|
--- a/apitools/base/protorpclite/protojson_test.py
|
|
+++ b/apitools/base/protorpclite/protojson_test.py
|
|
@@ -440,7 +440,7 @@ class ProtojsonTest(test_util.TestCase,
|
|
"""Test decoding improperly encoded base64 bytes value."""
|
|
self.assertRaisesWithRegexpMatch(
|
|
messages.DecodeError,
|
|
- 'Base64 decoding error: Incorrect padding',
|
|
+ 'Base64 decoding error: (?:Incorrect padding|Invalid base64-encoded string: .*)',
|
|
protojson.decode_message,
|
|
test_util.OptionalMessage,
|
|
'{"bytes_value": "abcdefghijklmnopq"}')
|
|
diff --git a/apitools/base/py/batch_test.py b/apitools/base/py/batch_test.py
|
|
index 90cf4fb..e1384c5 100644
|
|
--- a/apitools/base/py/batch_test.py
|
|
+++ b/apitools/base/py/batch_test.py
|
|
@@ -357,7 +357,7 @@ class BatchTest(unittest.TestCase):
|
|
self._DoTestConvertIdToHeader('blah', '<%s+blah>')
|
|
|
|
def testConvertIdThatNeedsEscaping(self):
|
|
- self._DoTestConvertIdToHeader('~tilde1', '<%s+%%7Etilde1>')
|
|
+ self._DoTestConvertIdToHeader('#hash1', r'<%s+%%23hash1>')
|
|
|
|
def _DoTestConvertHeaderToId(self, header, expected_id):
|
|
batch_request = batch.BatchHttpRequest('https://www.example.com')
|
|
diff --git a/apitools/gen/client_generation_test.py b/apitools/gen/client_generation_test.py
|
|
index 4e382dd..c26db39 100644
|
|
--- a/apitools/gen/client_generation_test.py
|
|
+++ b/apitools/gen/client_generation_test.py
|
|
@@ -42,6 +42,7 @@ class ClientGenerationTest(unittest.TestCase):
|
|
self.gen_client_binary = 'gen_client'
|
|
|
|
@test_utils.SkipOnWindows
|
|
+ @unittest.skip('needs network access')
|
|
def testGeneration(self):
|
|
for api in _API_LIST:
|
|
with test_utils.TempDir(change_to=True):
|