From 9ab3862c129692a235de0650bfcffa7db81de35d Mon Sep 17 00:00:00 2001 From: Hanno Schlichting Date: Fri, 20 Jan 2017 16:04:58 +0100 Subject: [PATCH] Work around missing `sys.getrefcount` in PyPy. --- src/AccessControl/tests/testZopeGuards.py | 12 ++++++++++-- src/AccessControl/tests/testZopeSecurityPolicy.py | 13 ++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/AccessControl/tests/testZopeGuards.py b/src/AccessControl/tests/testZopeGuards.py index f8fc6d5..7dd7094 100644 --- a/src/AccessControl/tests/testZopeGuards.py +++ b/src/AccessControl/tests/testZopeGuards.py @@ -91,14 +91,22 @@ def tearDown(self): def test_unauthorized(self): from AccessControl import Unauthorized from AccessControl.ZopeGuards import guarded_getattr + + try: + # PyPy + from sys import getrefcount + except ImportError: + def getrefcount(obj): + return 1 + obj, name = Method(), 'args' value = getattr(obj, name) - rc = sys.getrefcount(value) + rc = getrefcount(value) self.__sm.reject = True self.assertRaises(Unauthorized, guarded_getattr, obj, name) self.assert_(self.__sm.calls) del self.__sm.calls[:] - self.assertEqual(rc, sys.getrefcount(value)) + self.assertEqual(rc, getrefcount(value)) def test_calls_validate_for_unknown_type(self): from AccessControl.ZopeGuards import guarded_getattr diff --git a/src/AccessControl/tests/testZopeSecurityPolicy.py b/src/AccessControl/tests/testZopeSecurityPolicy.py index 934b294..0baeeab 100644 --- a/src/AccessControl/tests/testZopeSecurityPolicy.py +++ b/src/AccessControl/tests/testZopeSecurityPolicy.py @@ -233,15 +233,22 @@ def testProxyAccess(self): self.assertPolicyAllows(item, 'dangerous_m') def testIdentityProxy(self): + try: + # PyPy + from sys import getrefcount + except ImportError: + def getrefcount(obj): + return 1 + eo = ImplictAcqObject() eo.getOwner = lambda: None self.context.stack.append(eo) - rc = sys.getrefcount(eo) + rc = getrefcount(eo) self.testUserAccess() - self.assertEqual(rc, sys.getrefcount(eo)) + self.assertEqual(rc, getrefcount(eo)) eo._proxy_roles = () self.testUserAccess() - self.assertEqual(rc, sys.getrefcount(eo)) + self.assertEqual(rc, getrefcount(eo)) def testAccessToUnprotectedSubobjects(self): item = self.item