[Zope-Checkins] CVS: Packages/AccessControl/tests - testZopeGuards.py:1.1.4.8

Tres Seaver tseaver at zope.com
Mon Apr 4 14:28:34 EDT 2005


Update of /cvs-repository/Packages/AccessControl/tests
In directory cvs.zope.org:/tmp/cvs-serv18615/lib/python/AccessControl/tests

Modified Files:
      Tag: Zope-2_7-branch
	testZopeGuards.py 
Log Message:
 - Backport test for Collector #1460 (which wasn't in play for 2.7x).


=== Packages/AccessControl/tests/testZopeGuards.py 1.1.4.7 => 1.1.4.8 ===
--- Packages/AccessControl/tests/testZopeGuards.py:1.1.4.7	Fri Jan  7 17:03:59 2005
+++ Packages/AccessControl/tests/testZopeGuards.py	Mon Apr  4 14:28:34 2005
@@ -435,22 +435,56 @@
         code, its_globals = self._compile("actual_python.py")
         exec code in its_globals
 
-    # Compile code in fname, as restricted Python. Return the
-    # compiled code, and a safe globals dict for running it in.
-    # fname is the string name of a Python file; it must be found
-    # in the same directory as this file.
-    def _compile(self, fname):
+  
+    def test_dict_access(self):
+        from RestrictedPython.tests import verify
+
+        SIMPLE_DICT_ACCESS_SCRIPT = """
+def foo(text):
+    return text
+
+kw = {'text':'baz'}
+print foo(**kw)
+
+kw = {'text':True}
+print foo(**kw)
+"""
+        code, its_globals = self._compile_str(SIMPLE_DICT_ACCESS_SCRIPT, 'x')
+        verify.verify(code)
+
+        sm = SecurityManager()
+        old = self.setSecurityManager(sm)
+        try:
+            exec code in its_globals
+        finally:
+            self.setSecurityManager(old)
+
+        self.assertEqual(its_globals['_print'](),
+                        'baz\nTrue\n')
+
+    def _compile_str(self, text, name):
         from RestrictedPython import compile_restricted
         from AccessControl.ZopeGuards import get_safe_globals, guarded_getattr
 
-        fn = os.path.join( _HERE, fname)
-        code = compile_restricted(open(fn).read(), fn, 'exec')
+        code = compile_restricted(text, name, 'exec')
 
         g = get_safe_globals()
         g['_getattr_'] = guarded_getattr
         g['__debug__'] = 1  # so assert statements are active
         g['__name__'] = __name__ # so classes can be defined in the script
         return code, g
+
+    # Compile code in fname, as restricted Python. Return the
+    # compiled code, and a safe globals dict for running it in.
+    # fname is the string name of a Python file; it must be found
+    # in the same directory as this file.
+    def _compile(self, fname):
+        from RestrictedPython import compile_restricted
+        from AccessControl.ZopeGuards import get_safe_globals, guarded_getattr
+
+        fn = os.path.join( _HERE, fname)
+        text = open(fn).read()
+        return self._compile_str(text, fn)
 
     # d is a dict, the globals for execution or our safe builtins.
     # The callable values which aren't the same as the corresponding



More information about the Zope-Checkins mailing list