[Python-checkins] r52265 - sandbox/trunk/import_in_py/importer.py sandbox/trunk/import_in_py/test_importer.py

brett.cannon python-checkins at python.org
Tue Oct 10 06:46:51 CEST 2006


Author: brett.cannon
Date: Tue Oct 10 06:46:50 2006
New Revision: 52265
Modified:
 sandbox/trunk/import_in_py/importer.py
 sandbox/trunk/import_in_py/test_importer.py
Log:
Add tests for the bytecode handler (along with fixes needed to make it work and
a few notes about its current shortcomings).
Modified: sandbox/trunk/import_in_py/importer.py
==============================================================================
--- sandbox/trunk/import_in_py/importer.py	(original)
+++ sandbox/trunk/import_in_py/importer.py	Tue Oct 10 06:46:50 2006
@@ -32,6 +32,7 @@
 
 import imp
 import sys
+import marshal
 # XXX Importing os will not work in the end as it is implemented in Python
 # itself.
 import os
@@ -204,7 +205,9 @@
 module.__file__ = file_path
 module.__name__ = fullname
 with open(file_path, 'rb') as bytecode_file:
+ # XXX No verification of magic number.
 magic = bytecode_file.read(4)
+ # XXX No verification of timestamp.
 mtime = bytecode_file.read(4)
 compiled_code = marshal.load(bytecode_file)
 exec compiled_code in module.__dict__
Modified: sandbox/trunk/import_in_py/test_importer.py
==============================================================================
--- sandbox/trunk/import_in_py/test_importer.py	(original)
+++ sandbox/trunk/import_in_py/test_importer.py	Tue Oct 10 06:46:50 2006
@@ -7,6 +7,7 @@
 import os
 import tempfile
 import new
+import py_compile
 
 
 class BuiltinFrozen_Tester(unittest.TestCase):
@@ -184,12 +185,43 @@
 loaded_module = self.loader.load_module(self.module)
 self.failUnless(loaded_module is new_module)
 
+ 
+class BytecodeHandlerTests(SourceFileTests):
+ 
+ """Tests for the bytecode handler."""
+ 
+ def setUp(self):
+ """Make sure that the module has its bytecode generated."""
+ super(self.__class__, self).setUp()
+ py_compile.compile(self.file_path, doraise=True)
+ self.file_path += 'c' if __debug__ else 'o'
+ self.handler = importer.PyBytecodeHandler()
+ 
+ def test_handles_attr(self):
+ # 'handles' should return 'pyc' or 'pyo' depending on __debug__.
+ try:
+ importer.__debug__ = True
+ self.failUnlessEqual(self.handler.handles, 'pyc')
+ importer.__debug__ = False
+ self.failUnlessEqual(self.handler.handles, 'pyo')
+ finally:
+ del importer.__debug__
+ 
+ def test_handle_file(self):
+ # Should be able to handle a simple bytecode file that is freshly
+ # generated.
+ new_module = new.module(self.module)
+ self.handler.handle_file(new_module, self.module, None,
+ self.file_path)
+ self.verify_module(new_module)
+ 
 
 def test_main():
 test_support.run_unittest(
 BuiltinImporterTests,
 FrozenImporterTests,
 SourceHandlerTests,
+ BytecodeHandlerTests,
 FileSystemLoaderTests,
 )
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /