[Python-checkins] r53389 - python/branches/bcannon-objcap/Lib/test/_test_interpreter.py python/branches/bcannon-objcap/Lib/test/test_interpreter.py

brett.cannon python-checkins at python.org
Thu Jan 11 22:19:52 CET 2007


Author: brett.cannon
Date: Thu Jan 11 22:19:52 2007
New Revision: 53389

Added:
   python/branches/bcannon-objcap/Lib/test/_test_interpreter.py
      - copied unchanged from r53387, python/branches/bcannon-objcap/Lib/test/test_interpreter.py
Removed:
   python/branches/bcannon-objcap/Lib/test/test_interpreter.py
Log:
regrtest finds test classes in modules and runs them, so completely rename
test_interpreter so it isn't run.


Deleted: /python/branches/bcannon-objcap/Lib/test/test_interpreter.py
==============================================================================
--- /python/branches/bcannon-objcap/Lib/test/test_interpreter.py	Thu Jan 11 22:19:52 2007
+++ (empty file)
@@ -1,289 +0,0 @@
-""" Things to protect (and thus test) against:
-* Importing
-    + built-ins
-    + .pyc/.pyo
-    + extension modules
-* File access
-    + open()
-* Evil methods
-    + __del__
-    + __str__ (for exceptions)
-    + properties
-    + something that raises SystemExit
-
-"""
-import interpreter
-
-import unittest
-from test import test_support
-import sys
-import __builtin__
-import StringIO
-
-simple_stmt = """
-while True:
-    2 + 3
-    break
-"""
-
-test_sys_changed = """
-import sys
-if sys.version == 'test':
-    to_return.append(True)
-else:
-    to_return.append(False)
-"""
-
-test_builtins_contains = """
-import __builtin__
-_return.append(__builtin__.__dict__.__contains__("%s"))
-"""
-
-
-class BaseInterpTests(unittest.TestCase):
-
-    def setUp(self):
-        """Create a new interpreter."""
-        self.interp = interpreter.Interpreter()
-
-
-class BasicInterpreterTests(BaseInterpTests):
-
-    def test_basic_expression(self):
-        # Make sure that execucuting a simple expression does not die.
-        self.interp.execute('2 + 3')
-
-    def test_basic_statement(self):
-        # Make sure executing a statement does not die.
-        self.interp.execute(simple_stmt)
-
-
-class BuiltinsTests(BaseInterpTests):
-
-    """Test interpreter.Interpreter().builtins() ."""
-
-    def test_get(self):
-        # Test the getting of 'builtins'.
-        builtins = self.interp.builtins()
-        self.failUnless(isinstance(builtins, dict))
-        self.failUnless('object' in builtins)
-
-    def test_remove(self):
-        # Make sure that something can be removed from built-ins.
-        builtins = self.interp.builtins()
-        del builtins['open']
-        _return = []
-        builtins['_return'] = _return
-        self.interp.execute(test_builtins_contains % 'open')
-        self.failUnless(not _return[-1])
-
-    def test_add_remove(self):
-        # Make sure you can add to the built-ins and then remove the same
-        # object.
-        self.interp.builtins()['test'] = 'test'
-        _return = []
-        self.interp.builtins()['_return'] = _return
-        self.interp.execute(test_builtins_contains % 'test')
-        self.failUnless(_return[-1])
-        del self.interp.builtins()['test']
-        self.interp.execute(test_builtins_contains % 'test')
-        self.failUnless(not _return[-1])
-        
-    def test_copied(self):
-        # Make sure built-ins are unique per interpreter.
-        master_id = id(__builtin__.__dict__)
-        _return = []
-        self.interp.builtins()['_return'] = _return
-        self.interp.execute('import __builtin__;'
-                            '_return.append(id(__builtin__.__dict__))')
-        self.failUnless(_return[-1] != master_id)
-        
-                            
-class ModulesTests(BaseInterpTests):
-
-    """Test interpreter.Interpreter().modules ."""
-
-    def test_get(self):
-        # Make sure a dict is returned.
-        modules = self.interp.modules
-        self.failUnless(isinstance(modules, dict))
-        master_id = id(modules)
-        _return = []
-        self.interp.builtins()['_return'] = _return
-        self.interp.execute('import sys; _return.append(id(sys.modules))')
-        self.failUnlessEqual(_return[-1], master_id)
-
-    def test_set(self):
-        # Make sure setting 'modules' can be done and has proper type checking.
-        self.interp.modules = {}
-        self.failUnlessRaises(TypeError, setattr, self.interp.modules, [])
-
-    def test_mutation(self):
-        # If a module is added, make sure importing uses that module.
-        self.interp.modules['test1'] = 'test1'
-        _return = []
-        self.interp.builtins()['_return'] = _return
-        self.interp.execute('import test1; _return.append(test1)')
-        self.failUnlessEqual(_return[-1], 'test1')
-        self.interp.modules['test1'] = 'test2'
-        self.interp.execute('import test1; _return.append(test1)')
-        self.failUnlessEqual(_return[-1], 'test2')
-
-    def test_deleting(self):
-        # Make sure that a module is re-imported if it is removed.
-        self.failUnless('token' not in self.interp.modules)
-        self.interp.execute('import token')
-        del self.interp.modules['token']
-        self.interp.execute('import token')
-        
-    def test_replacing(self):
-        # Replacing with a new dict should work.
-        new_modules = self.interp.modules.copy()
-        self.interp.modules = new_modules
-        _return = []
-        self.interp.builtins()['_return'] = _return
-        self.interp.execute('import sys; _return.append(id(sys.modules))')
-        self.failUnlessEqual(id(new_modules), _return[-1])
-
-    def test_fresh(self):
-        # Make sure that imported Python modules are new instances.
-        import token
-        token.test = 'test'
-        _return = []
-        self.interp.builtins()['_return'] = _return
-        self.interp.execute("import token;"
-                            "_return.append(hasattr(token, 'test'))")
-        self.failUnless(not _return[-1])
-        
-    def test_not_cached(self):
-        # Make sure that 'modules' dict is not cached.
-        builtin = self.interp.modules['__builtin__']
-        main = self.interp.modules['__main__']
-        self.interp.execute("import token")
-        self.interp.modules = {}
-        self.interp.modules['__builtin__'] = builtin
-        self.interp.modules['__main__'] = main
-        self.interp.execute("import token")
-        self.failUnless('token' in self.interp.modules)
-        
-
-class SysDictTests(BaseInterpTests):
-
-    """Test interpreter.Interpreter().sys_dict ."""
-
-    def test_get(self):
-        # Make sure a dict is returned.
-        sys_dict = self.interp.sys_dict()
-        self.failUnless(isinstance(sys_dict, dict))
-        self.failUnless('version' in sys_dict)
-
-    def test_mutating(self):
-        # Changes to the dict should be reflected in the interpreter.
-        sys_dict = self.interp.sys_dict()
-        sys_dict['version'] = 'test'
-        interp_return = []
-        self.interp.builtins()['to_return'] = interp_return
-        self.interp.execute(test_sys_changed)
-        self.failUnless(interp_return[-1])
-
-    def test_deletion(self):
-        # Make sure removing a value raises the proper exception when accessing
-        # through the 'sys' module.
-        del self.interp.sys_dict()['version']
-        stdout, stderr = self.interp.redirect_output()
-        self.failUnlessRaises(RuntimeError, self.interp.execute,
-                              'import sys; sys.version')
-        self.failUnless(self.interp.exc_matches(AttributeError))
-
-    def test_copied(self):
-        # sys_dict should be unique per interpreter (including mutable data
-        # structures).
-        sys_version = sys.version
-        self.interp.sys_dict()['version'] = 'test'
-        reload(sys)
-        self.failUnlessEqual(sys.version, sys_version)
-        _return = []
-        self.interp.builtins()['_return'] = _return
-        self.interp.execute("import sys; _return.append(sys.version)")
-        self.failUnlessEqual(_return[-1], 'test')
-        
-
-class InputOutputTests(BaseInterpTests):
-
-    """Test stdin/stdout/stderr fiddling."""
-    
-    def test_redirect_output_defaults(self):
-        # Make sure it sets stdout and stderr.
-        stdout, stderr = self.interp.redirect_output()
-        self.interp.execute("print 'test'")
-        self.failUnlessEqual("test\n", stdout.getvalue())
-        self.failUnless(not stderr.getvalue())
-        self.interp.execute(r"import sys; sys.stderr.write('test\n')")
-        self.failUnlessEqual('test\n', stderr.getvalue())
-        
-    def test_redirect_output_arguments(self):
-        # Test passing in arguments to redirect_output().
-        new_stdout = StringIO.StringIO()
-        new_stderr = StringIO.StringIO()
-        used_stdout, used_stderr = self.interp.redirect_output(new_stdout,
-                                                                new_stderr)
-        self.failUnless(used_stdout is new_stdout)
-        self.failUnless(used_stderr is new_stderr)
-        self.failUnlessRaises(RuntimeError, self.interp.execute, '=')
-        self.failUnlessEqual(new_stderr.getvalue(), used_stderr.getvalue())
-        self.interp.execute("print 'test'")
-        self.failUnlessEqual(new_stdout.getvalue(), used_stdout.getvalue())
-        
-        
-class ExceptionsTests(BaseInterpTests):
-
-    """Test exception usage."""
-    
-    def test_execute_failure(self):
-        # RuntimeError should be raised when something goes bad in execute().
-        stdout, stderr = self.interp.redirect_output()
-        self.failUnlessRaises(RuntimeError, self.interp.execute, "=")
-        
-    def test_exc_matches(self):
-        # Test exc_matches().
-        stdout, stderr = self.interp.redirect_output()
-        self.failUnlessRaises(RuntimeError, self.interp.execute, '=')
-        self.failUnless(self.interp.exc_matches(SyntaxError))
-        self.failUnless(not self.interp.exc_matches(TypeError))
-        
-    def test_exception_cleared(self):
-        # No exception should be set after a successful execution.
-        stdout, stderr = self.interp.redirect_output()
-        self.failUnlessRaises(RuntimeError, self.interp.execute, '=')
-        self.interp.execute('2 + 3')
-        self.failUnlessRaises(LookupError, self.interp.exc_matches, Exception)
-        
-    def test_multiple_exc_checks(self):
-        # Be able to check the exception multiple times.
-        stdout, stderr = self.interp.redirect_output()
-        self.failUnlessRaises(RuntimeError, self.interp.execute, '=')
-        for x in range(2):
-            self.failUnless(self.interp.exc_matches(SyntaxError))
-            
-    def test_SystemExit_safe(self):
-        # Raising SystemExit should not cause the process to exit.
-        self.failUnlessRaises(RuntimeError, self.interp.execute,
-                                "raise SystemExit")
-        self.failUnless(self.interp.exc_matches(SystemExit))
-        self.failUnlessRaises(RuntimeError, self.interp.execute, "exit()")
-        self.failUnless(self.interp.exc_matches(SystemExit))
-        
-
-def test_main():
-    test_support.run_unittest(
-            BasicInterpreterTests,
-            BuiltinsTests,
-            ModulesTests,
-            SysDictTests,
-            InputOutputTests,
-            ExceptionsTests,
-    )
-
-
-#if __name__ == '__main__':
-    #test_main()


More information about the Python-checkins mailing list