[Checkins] SVN: zope.interface/branches/tseaver-better_unit_tests/src/zope/interface/ 100% coverage for 'verify' (under nose).

Tres Seaver tseaver at palladion.com
Mon Apr 19 11:18:16 EDT 2010


Log message for revision 111114:
  100% coverage for 'verify' (under nose).

Changed:
  U   zope.interface/branches/tseaver-better_unit_tests/src/zope/interface/tests/test_verify.py
  U   zope.interface/branches/tseaver-better_unit_tests/src/zope/interface/verify.py

-=-
Modified: zope.interface/branches/tseaver-better_unit_tests/src/zope/interface/tests/test_verify.py
===================================================================
--- zope.interface/branches/tseaver-better_unit_tests/src/zope/interface/tests/test_verify.py	2010-04-19 15:18:14 UTC (rev 111113)
+++ zope.interface/branches/tseaver-better_unit_tests/src/zope/interface/tests/test_verify.py	2010-04-19 15:18:15 UTC (rev 111114)
@@ -373,12 +373,12 @@
         from zope.interface import implements
 
         class ICurrent(Interface):
-            foo = Attribute("The foo Attribute")
+            attr = Attribute("The foo Attribute")
 
         class Current:
             implements(ICurrent)
 
-            def foo(self):
+            def attr(self):
                 pass
 
         self._callFUT(ICurrent, Current)
@@ -389,16 +389,45 @@
         from zope.interface.exceptions import BrokenMethodImplementation
 
         class ICurrent(Interface):
-            def foo():
+            def method():
                 pass
 
         class Current:
             implements(ICurrent)
-            foo = 1
+            method = 1
 
         self.assertRaises(BrokenMethodImplementation,
                           self._callFUT, ICurrent, Current)
 
+    def test_class_has_attribute_for_attribute(self):
+        from zope.interface import Attribute
+        from zope.interface import Interface
+        from zope.interface import implements
+
+        class ICurrent(Interface):
+            attr = Attribute("The foo Attribute")
+
+        class Current:
+            implements(ICurrent)
+
+            attr = 1
+
+        self._callFUT(ICurrent, Current)
+
+    def test_class_misses_attribute_for_attribute(self):
+        # This check *passes* for verifyClass
+        from zope.interface import Attribute
+        from zope.interface import Interface
+        from zope.interface import implements
+
+        class ICurrent(Interface):
+            attr = Attribute("The foo Attribute")
+
+        class Current:
+            implements(ICurrent)
+
+        self._callFUT(ICurrent, Current)
+
 class Test_verifyObject(Test_verifyClass):
 
     def _callFUT(self, iface, target):
@@ -407,21 +436,49 @@
             target = target()
         return verifyObject(iface, target)
 
-    def testModule(self):
+    def test_class_misses_attribute_for_attribute(self):
+        # This check *fails* for verifyObject
+        from zope.interface import Attribute
+        from zope.interface import Interface
+        from zope.interface import implements
+        from zope.interface.exceptions import BrokenImplementation
+
+        class ICurrent(Interface):
+            attr = Attribute("The foo Attribute")
+
+        class Current:
+            implements(ICurrent)
+
+        self.assertRaises(BrokenImplementation,
+                          self._callFUT, ICurrent, Current)
+
+    def test_module_hit(self):
         from zope.interface.tests.idummy import IDummyModule
         from zope.interface.tests import dummy
 
         self._callFUT(IDummyModule, dummy)
 
+    def test_module_miss(self):
+        from zope.interface import Interface
+        from zope.interface.tests import dummy
+        from zope.interface.exceptions import DoesNotImplement
+
+        # same name, different object
+        class IDummyModule(Interface):
+            pass
+
+        self.assertRaises(DoesNotImplement,
+                          self._callFUT, IDummyModule, dummy)
+
 class OldSkool:
     pass
 
 def test_suite():
+    #import doctest
     return unittest.TestSuite((
         unittest.makeSuite(Test_verifyClass),
         unittest.makeSuite(Test_verifyObject),
     #   This one needs to turn into just docs.
-    #   import doctest
-    #   doctest.DocFileSuite('../verify.txt',
-    #                        optionflags=doctest.NORMALIZE_WHITESPACE),
+    #doctest.DocFileSuite('../verify.txt',
+    #                     optionflags=doctest.NORMALIZE_WHITESPACE),
     ))

Modified: zope.interface/branches/tseaver-better_unit_tests/src/zope/interface/verify.py
===================================================================
--- zope.interface/branches/tseaver-better_unit_tests/src/zope/interface/verify.py	2010-04-19 15:18:14 UTC (rev 111113)
+++ zope.interface/branches/tseaver-better_unit_tests/src/zope/interface/verify.py	2010-04-19 15:18:15 UTC (rev 111114)
@@ -70,7 +70,8 @@
         if isinstance(attr, FunctionType):
             if sys.version[0] == '3' and isinstance(candidate, type):
                 # This is an "unbound method" in Python 3.
-                meth = fromFunction(attr, iface, name=name, imlevel=1)
+                meth = fromFunction(attr, iface, name=name,
+                                    imlevel=1) #pragma NO COVERAGE
             else:
                 # Nope, just a normal function
                 meth = fromFunction(attr, iface, name=name)



More information about the checkins mailing list