summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Gedminas <marius@gedmin.as>2013-03-27 17:44:54 +0200
committerMarius Gedminas <marius@gedmin.as>2013-03-27 17:44:54 +0200
commitbc75e97e8fc998ab5d682c4f57ee85a54559efef (patch)
treec6e96aa3c8b8c5bf1bf8a3909e260fc4d309aabb
parentf045005598efc01be2cac431a29333d81e8d1a15 (diff)
downloadzope-security-bc75e97e8fc998ab5d682c4f57ee85a54559efef.tar.gz
Fix a long-standing bug with ZOPE_WATCH_CHECKERS=2
-rw-r--r--CHANGES.rst4
-rw-r--r--src/zope/security/checker.py2
-rw-r--r--src/zope/security/tests/test_checker.py10
3 files changed, 14 insertions, 2 deletions
diff --git a/CHANGES.rst b/CHANGES.rst
index 93d39b1..5a2d3a5 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -5,7 +5,9 @@ CHANGES
4.0.0b2 (unreleased)
--------------------
-- TBD
+- Bugfix: ZOPE_WATCH_CHECKERS=2 used to incorrectly suppress
+ unauthorized/forbidden warnings.
+
4.0.0b1 (2013-03-11)
--------------------
diff --git a/src/zope/security/checker.py b/src/zope/security/checker.py
index 89ae214..f92a2ff 100644
--- a/src/zope/security/checker.py
+++ b/src/zope/security/checker.py
@@ -515,7 +515,7 @@ class CheckerLoggingMixin(object):
_file = sys.stderr
def _log(self, msg, verbosity=1):
- if verbosity >= self.verbosity:
+ if self.verbosity >= verbosity:
self._file.write('%s\n' % msg)
def check(self, object, name):
diff --git a/src/zope/security/tests/test_checker.py b/src/zope/security/tests/test_checker.py
index f6ad51b..ffcfc79 100644
--- a/src/zope/security/tests/test_checker.py
+++ b/src/zope/security/tests/test_checker.py
@@ -1162,6 +1162,16 @@ class CheckerLoggingMixinTests(unittest.TestCase):
self.assertEqual(checker._file[0],
'[CHK] - Unauthorized: name on TESTING\n')
+ def test_check_unauthorized_raised_verbosity(self):
+ from zope.security.interfaces import Unauthorized
+ checker = self._makeOne(Unauthorized)
+ checker.verbosity = 2
+ self.assertRaises(Unauthorized,
+ checker.check, self._makeObject(), 'name')
+ self.assertEqual(len(checker._file), 1)
+ self.assertEqual(checker._file[0],
+ '[CHK] - Unauthorized: name on TESTING\n')
+
def test_check_forbidden_attribute(self):
from zope.security.interfaces import ForbiddenAttribute
checker = self._makeOne(ForbiddenAttribute)