diff options
author | Adrien Di Mascio <Adrien.DiMascio@logilab.fr> | 2008-01-24 09:08:33 +0100 |
---|---|---|
committer | Adrien Di Mascio <Adrien.DiMascio@logilab.fr> | 2008-01-24 09:08:33 +0100 |
commit | 80ae3809ab623ebb7f123dd4c785c2bff319b97b (patch) | |
tree | 55419d31993a251e1c39d04eb6717f440ed34c32 | |
parent | 040342f3c6c6b0aecfe8ebb3b01164ced5be0154 (diff) | |
download | logilab-common-80ae3809ab623ebb7f123dd4c785c2bff319b97b.tar.gz |
fix subinterface handling
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | interface.py | 2 | ||||
-rw-r--r-- | test/unittest_interface.py | 11 |
3 files changed, 12 insertions, 2 deletions
@@ -3,6 +3,7 @@ ChangeLog for logilab.common -- * deprecation: new class_moved utility function + * interface: fix subinterface handling 2008-01-10 -- 0.26.1 * optparser: support --version at main command level diff --git a/interface.py b/interface.py index 325e470..3589212 100644 --- a/interface.py +++ b/interface.py @@ -41,7 +41,7 @@ def implements(obj, interface): if not isinstance(kimplements, (list, tuple)): kimplements = (kimplements,) for implementedinterface in kimplements: - if issubclass(interface, implementedinterface): + if issubclass(implementedinterface, interface): return True return False diff --git a/test/unittest_interface.py b/test/unittest_interface.py index c708ff5..e38e6b1 100644 --- a/test/unittest_interface.py +++ b/test/unittest_interface.py @@ -55,7 +55,16 @@ class ExtendTC(TestCase): extend(C1, IFace3) self.failUnless(C1.__implements__ is c1impl) self.failUnless(D.__implements__ is dimpl) - + + + def test_nonregr_implements_baseinterface(self): + class SubIFace(IFace1): pass + class X(object): + __implements__ = (SubIFace,) + + self.failUnless(SubIFace.is_implemented_by(X)) + self.failUnless(IFace1.is_implemented_by(X)) + if __name__ == '__main__': unittest_main() |