[Checkins] SVN: zope.security/trunk/ Coverage for z.s.checker.TracebackSupplement.

Tres Seaver cvs-admin at zope.org
Wed Dec 26 22:26:38 UTC 2012


Log message for revision 128908:
  Coverage for z.s.checker.TracebackSupplement.

Changed:
  _U  zope.security/trunk/
  U   zope.security/trunk/src/zope/security/checker.py
  U   zope.security/trunk/src/zope/security/tests/test_checker.py

-=-
Modified: zope.security/trunk/src/zope/security/checker.py
===================================================================
--- zope.security/trunk/src/zope/security/checker.py	2012-12-26 21:47:43 UTC (rev 128907)
+++ zope.security/trunk/src/zope/security/checker.py	2012-12-26 22:26:37 UTC (rev 128908)
@@ -247,19 +247,19 @@
             cls = self.obj.__class__
             if hasattr(cls, "__module__"):
                 s = "%s.%s" % (cls.__module__, cls.__name__)
-            else:
+            else: #pragma NO COVER XXX
                 s = str(cls.__name__)
             result.append("   - class: " + s)
-        except:
+        except: #pragma NO COVER XXX
             pass
         try:
             cls = type(self.obj)
             if hasattr(cls, "__module__"):
                 s = "%s.%s" % (cls.__module__, cls.__name__)
-            else:
+            else: #pragma NO COVER XXX
                 s = str(cls.__name__)
             result.append("   - type: " + s)
-        except:
+        except: #pragma NO COVER XXX
             pass
         return "\n".join(result)
 

Modified: zope.security/trunk/src/zope/security/tests/test_checker.py
===================================================================
--- zope.security/trunk/src/zope/security/tests/test_checker.py	2012-12-26 21:47:43 UTC (rev 128907)
+++ zope.security/trunk/src/zope/security/tests/test_checker.py	2012-12-26 22:26:37 UTC (rev 128908)
@@ -15,8 +15,16 @@
 """
 import unittest
 
+def _skip_if_not_Py2(testfunc):
+    import sys
+    from functools import update_wrapper
+    if sys.version_info[0] >= 3:
+        def dummy(self):
+            pass
+        update_wrapper(dummy, testfunc)
+        return dummy
+    return testfunc
 
-
 class Test_ProxyFactory(unittest.TestCase):
 
     def _callFUT(self, object, checker=None):
@@ -388,18 +396,63 @@
         finally:
             _clear()
 
+
 class CheckerPyTests(unittest.TestCase, CheckerTestsBase):
 
     def _getTargetClass(self):
         from zope.security.checker import CheckerPy
         return CheckerPy
 
+
 class CheckerTests(unittest.TestCase, CheckerTestsBase):
 
     def _getTargetClass(self):
         from zope.security.checker import Checker
         return Checker
 
+
+class TracebackSupplementTests(unittest.TestCase):
+
+    def _getTargetClass(self):
+        from zope.security.checker import TracebackSupplement
+        return TracebackSupplement
+
+    def _makeOne(self, obj):
+        return self._getTargetClass()(obj)
+
+    def test_getInfo_builtin_types(self):
+        for val, typ in [('', 'str'),
+                         (0, 'int'),
+                         (1.0, 'float'),
+                         ((), 'tuple'),
+                         ([], 'list'),
+                         ({}, 'dict'),
+                        ]:
+            tbs = self._makeOne(val)
+            self.assertEqual(tbs.getInfo().splitlines(),
+                            ['   - class: __builtin__.%s' % typ,
+                             '   - type: __builtin__.%s' % typ,
+                            ])
+
+    def test_getInfo_newstyle_instance(self):
+        class C(object):
+            pass
+        tbs = self._makeOne(C())
+        self.assertEqual(tbs.getInfo().splitlines(),
+                         ['   - class: %s.C' % self.__class__.__module__,
+                          '   - type: %s.C' % self.__class__.__module__,
+                         ])
+
+    @_skip_if_not_Py2
+    def test_getInfo_classic_instance(self):
+        exec("class C: pass", globals(), locals())
+        tbs = self._makeOne(locals()['C']())
+        self.assertEqual(tbs.getInfo().splitlines(),
+                         ['   - class: %s.C' % self.__class__.__module__,
+                          '   - type: __builtin__.instance',
+                         ])
+
+
 class Test(unittest.TestCase):
 
     def setUp(self):
@@ -1064,6 +1117,7 @@
         unittest.makeSuite(Test_canAccess),
         unittest.makeSuite(CheckerPyTests),
         unittest.makeSuite(CheckerTests),
+        unittest.makeSuite(TracebackSupplementTests),
         unittest.makeSuite(Test),
         unittest.makeSuite(TestCheckerPublic),
         unittest.makeSuite(TestCombinedChecker),



More information about the checkins mailing list