summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSylvain <syt@logilab.fr>2007-09-28 16:49:31 +0200
committerSylvain <syt@logilab.fr>2007-09-28 16:49:31 +0200
commitf1300b194056ad5b76eb83b135a915dcf09a37a0 (patch)
tree04280cde4a5655dfaf4474ea938dd6f0517e781b
parentdb7bde02faf4be871a20e04cd78478304856d87e (diff)
downloadlogilab-common-f1300b194056ad5b76eb83b135a915dcf09a37a0.tar.gz
test and fix
-rw-r--r--interface.py1
-rw-r--r--test/unittest_interface.py11
2 files changed, 10 insertions, 2 deletions
diff --git a/interface.py b/interface.py
index 78f0afa..325e470 100644
--- a/interface.py
+++ b/interface.py
@@ -59,6 +59,7 @@ def extend(klass, interface, _recurs=False):
kimplementsklass = type(kimplements)
kimplements = list(kimplements)
except AttributeError:
+ kimplementsklass = tuple
kimplements = []
kimplements.append(interface)
klass.__implements__ = kimplementsklass(kimplements)
diff --git a/test/unittest_interface.py b/test/unittest_interface.py
index 22992c3..c708ff5 100644
--- a/test/unittest_interface.py
+++ b/test/unittest_interface.py
@@ -22,6 +22,7 @@ class C2(B):
class D(C1):
__implements__ = ()
+class Z(object): pass
class ExtendTC(TestCase):
@@ -33,8 +34,6 @@ class ExtendTC(TestCase):
dimpl = D.__implements__
def test_base(self):
- extend(A, IFace1)
- self.failUnless(A.__implements__ is aimpl)
extend(A, IFace2)
self.failUnlessEqual(A.__implements__, (IFace1, IFace2))
self.failUnlessEqual(B.__implements__, (IFace1, IFace2))
@@ -44,6 +43,14 @@ class ExtendTC(TestCase):
self.failUnless(C2.__implements__ is c2impl)
self.failUnlessEqual(D.__implements__, (IFace2,))
+ def test_already_impl(self):
+ extend(A, IFace1)
+ self.failUnless(A.__implements__ is aimpl)
+
+ def test_no_impl(self):
+ extend(Z, IFace1)
+ self.failUnlessEqual(Z.__implements__, (IFace1,))
+
def test_notimpl_explicit(self):
extend(C1, IFace3)
self.failUnless(C1.__implements__ is c1impl)