summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrien Di Mascio <Adrien.DiMascio@logilab.fr>2008-01-24 09:08:33 +0100
committerAdrien Di Mascio <Adrien.DiMascio@logilab.fr>2008-01-24 09:08:33 +0100
commit80ae3809ab623ebb7f123dd4c785c2bff319b97b (patch)
tree55419d31993a251e1c39d04eb6717f440ed34c32
parent040342f3c6c6b0aecfe8ebb3b01164ced5be0154 (diff)
downloadlogilab-common-80ae3809ab623ebb7f123dd4c785c2bff319b97b.tar.gz
fix subinterface handling
-rw-r--r--ChangeLog1
-rw-r--r--interface.py2
-rw-r--r--test/unittest_interface.py11
3 files changed, 12 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 2d008de..3f1bd2f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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()