Fix bad acting classes and 'is_bound_method' check

Change-Id: I5c52e67748402678206919880404e604e4d054ca
Closes-Bug: #1498299
This commit is contained in:
Joshua Harlow 2015-09-21 21:39:47 -07:00
parent 84595a0e9a
commit e17866e4b7
2 changed files with 18 additions and 1 deletions

View File

@ -165,7 +165,7 @@ def is_same_callback(callback1, callback2, strict=True):
def is_bound_method(method): def is_bound_method(method):
"""Returns if the given method is bound to an object.""" """Returns if the given method is bound to an object."""
return bool(get_method_self(method)) return get_method_self(method) is not None
def is_subclass(obj, cls): def is_subclass(obj, cls):

View File

@ -72,6 +72,14 @@ class Class(object):
pass pass
class BadClass(object):
def do_something(self):
pass
def __nonzero__(self):
return False
class CallableClass(object): class CallableClass(object):
def __call__(self, i, j): def __call__(self, i, j):
pass pass
@ -145,6 +153,15 @@ class CallbackEqualityTest(test_base.BaseTestCase):
self.assertTrue(reflection.is_same_callback(b.b, c.b, strict=False)) self.assertTrue(reflection.is_same_callback(b.b, c.b, strict=False))
class BoundMethodTest(test_base.BaseTestCase):
def test_baddy(self):
b = BadClass()
self.assertTrue(reflection.is_bound_method(b.do_something))
def test_static_method(self):
self.assertFalse(reflection.is_bound_method(Class.static_method))
class GetCallableNameTest(test_base.BaseTestCase): class GetCallableNameTest(test_base.BaseTestCase):
def test_mere_function(self): def test_mere_function(self):