Merge pull request #1810 from OJFord/fix-1809
Fix #1809: skip patching staticmethods
This commit is contained in:
commit
afdda39fc4
@ -89,6 +89,17 @@ class BaseMockAWS(object):
|
||||
if inspect.ismethod(attr_value) and attr_value.__self__ is klass:
|
||||
continue
|
||||
|
||||
# Check if this is a staticmethod. If so, skip patching
|
||||
for cls in inspect.getmro(klass):
|
||||
if attr_value.__name__ not in cls.__dict__:
|
||||
continue
|
||||
bound_attr_value = cls.__dict__[attr_value.__name__]
|
||||
if not isinstance(bound_attr_value, staticmethod):
|
||||
break
|
||||
else:
|
||||
# It is a staticmethod, skip patching
|
||||
continue
|
||||
|
||||
try:
|
||||
setattr(klass, attr, self(attr_value, reset=False))
|
||||
except TypeError:
|
||||
|
@ -85,3 +85,14 @@ class TesterWithSetup(unittest.TestCase):
|
||||
def test_still_the_same(self):
|
||||
bucket = self.conn.get_bucket('mybucket')
|
||||
bucket.name.should.equal("mybucket")
|
||||
|
||||
|
||||
@mock_s3_deprecated
|
||||
class TesterWithStaticmethod(object):
|
||||
|
||||
@staticmethod
|
||||
def static(*args):
|
||||
assert not args or not isinstance(args[0], TesterWithStaticmethod)
|
||||
|
||||
def test_no_instance_sent_to_staticmethod(self):
|
||||
self.static()
|
||||
|
Loading…
Reference in New Issue
Block a user