[Checkins] SVN: zope.interface/branches/tseaver-no_2to3/src/zope/interface/tests/test_advice.py 100% coverage under Python 2.x.

Tres Seaver cvs-admin at zope.org
Fri Apr 6 04:14:25 UTC 2012


Log message for revision 124985:
  100% coverage under Python 2.x.

Changed:
  U   zope.interface/branches/tseaver-no_2to3/src/zope/interface/tests/test_advice.py

-=-
Modified: zope.interface/branches/tseaver-no_2to3/src/zope/interface/tests/test_advice.py
===================================================================
--- zope.interface/branches/tseaver-no_2to3/src/zope/interface/tests/test_advice.py	2012-04-06 02:41:43 UTC (rev 124984)
+++ zope.interface/branches/tseaver-no_2to3/src/zope/interface/tests/test_advice.py	2012-04-06 04:14:21 UTC (rev 124985)
@@ -177,6 +177,19 @@
         self.assert_(isinstance(Derived, Metaclass3))
 
     @_skip_under_py3k
+    def test_meta_no_bases(self):
+        from zope.interface.tests.advisory_testing import ping
+        try:
+            from types import ClassType
+        except ImportError:
+            return
+        class Thing:
+            ping([], 1)
+        klass, = Thing # unpack list created by pong
+        self.assertEqual(type(klass), ClassType)
+
+
+    @_skip_under_py3k
     def test_meta_of_class(self):
         from zope.interface.advice import determineMetaclass
 
@@ -189,11 +202,65 @@
         self.assertEquals(determineMetaclass((Meta, type)), Metameta)
 
 
+class Test_minimalBases(unittest.TestCase):
+
+    def _callFUT(self, klasses):
+        from zope.interface.advice import minimalBases
+        return minimalBases(klasses)
+
+    def test_empty(self):
+        self.assertEqual(self._callFUT([]), [])
+
+    @_skip_under_py3k
+    def test_w_oldstyle_meta(self):
+        class C:
+            pass
+        self.assertEqual(self._callFUT([type(C)]), [])
+
+    @_skip_under_py3k
+    def test_w_oldstyle_class(self):
+        class C:
+            pass
+        self.assertEqual(self._callFUT([C]), [C])
+
+    def test_w_newstyle_meta(self):
+        self.assertEqual(self._callFUT([type]), [type])
+
+    def test_w_newstyle_class(self):
+        class C(object):
+            pass
+        self.assertEqual(self._callFUT([C]), [C])
+
+    def test_simple_hierarchy_skips_implied(self):
+        class A(object):
+            pass
+        class B(A):
+            pass
+        class C(B):
+            pass
+        class D(object):
+            pass
+        self.assertEqual(self._callFUT([A, B, C]), [C])
+        self.assertEqual(self._callFUT([A, C]), [C])
+        self.assertEqual(self._callFUT([B, C]), [C])
+        self.assertEqual(self._callFUT([A, B]), [B])
+        self.assertEqual(self._callFUT([D, B, D]), [B, D])
+
+    def test_repeats_kicked_to_end_of_queue(self):
+        class A(object):
+            pass
+        class B(object):
+            pass
+        self.assertEqual(self._callFUT([A, B, A]), [B, A])
+
+
+
 def test_suite():
     if sys.version[0] == '2':
         return unittest.TestSuite((
             unittest.makeSuite(FrameInfoTest),
             unittest.makeSuite(AdviceTests),
+            unittest.makeSuite(Test_minimalBases),
         ))
     else:
         # Advise metaclasses doesn't work in Python 3



More information about the checkins mailing list