diff --git a/src/AccessControl/ImplPython.py b/src/AccessControl/ImplPython.py index 61fd120..2a07365 100644 --- a/src/AccessControl/ImplPython.py +++ b/src/AccessControl/ImplPython.py @@ -31,7 +31,7 @@ # security implementations exist, we can switch between them later. try: from AccessControl.cAccessControl import _what_not_even_god_should_do -except ImportError: +except (ImportError, AttributeError): _what_not_even_god_should_do = [] from AccessControl.interfaces import ISecurityManager diff --git a/src/AccessControl/tests/testSecurityManager.py b/src/AccessControl/tests/testSecurityManager.py index 40058a0..1f04577 100644 --- a/src/AccessControl/tests/testSecurityManager.py +++ b/src/AccessControl/tests/testSecurityManager.py @@ -15,7 +15,7 @@ """ import unittest - +import os _THREAD_ID = 123 @@ -250,6 +250,7 @@ def _getTargetClass(self): return SecurityManager +@unittest.skipIf(os.environ.get('PURE_PYTHON'), reason="Test expects C impl.") class C_SecurityManagerTests(SecurityManagerTestBase, ISecurityManagerConformance, unittest.TestCase): diff --git a/src/AccessControl/tests/testZopeSecurityPolicy.py b/src/AccessControl/tests/testZopeSecurityPolicy.py index c81face..cddece6 100644 --- a/src/AccessControl/tests/testZopeSecurityPolicy.py +++ b/src/AccessControl/tests/testZopeSecurityPolicy.py @@ -12,6 +12,7 @@ ############################################################################## import sys +import os import unittest from doctest import DocTestSuite @@ -775,9 +776,10 @@ def loop(): def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(Python_ZSPTests)) - suite.addTest(unittest.makeSuite(C_ZSPTests)) suite.addTest(unittest.makeSuite(Python_SMTests)) - suite.addTest(unittest.makeSuite(C_SMTests)) + if not os.environ.get('PURE_PYTHON'): + suite.addTest(unittest.makeSuite(C_ZSPTests)) + suite.addTest(unittest.makeSuite(C_SMTests)) suite.addTest(DocTestSuite()) suite.addTest(unittest.makeSuite(GetRolesWithMultiThreadTest)) return suite diff --git a/tox.ini b/tox.ini index 079a38c..3ea6fcf 100644 --- a/tox.ini +++ b/tox.ini @@ -19,6 +19,9 @@ deps = setuptools < 52 zc.buildout skip_install = true +setenv = + PURE_PYTHON=1 + AC_PURE_PYTHON=1 [testenv:coverage] basepython = python3