From 4710c53dcad1ebf3755f3efb9e80ac24bd72a9b2 Mon Sep 17 00:00:00 2001 From: darylm503 Date: Mon, 16 Apr 2012 22:12:42 +0000 Subject: AppPkg/Applications/Python: Add Python 2.7.2 sources since the release of Python 2.7.3 made them unavailable from the python.org web site. These files are a subset of the python-2.7.2.tgz distribution from python.org. Changed files from PyMod-2.7.2 have been copied into the corresponding directories of this tree, replacing the original files in the distribution. Signed-off-by: daryl.mcdaniel@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13197 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Python-2.7.2/Lib/test/test_compileall.py | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py (limited to 'AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py') diff --git a/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py new file mode 100644 index 0000000000..5979477bf0 --- /dev/null +++ b/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py @@ -0,0 +1,80 @@ +import compileall +import imp +import os +import py_compile +import shutil +import struct +import tempfile +from test import test_support +import unittest + + +class CompileallTests(unittest.TestCase): + + def setUp(self): + self.directory = tempfile.mkdtemp() + self.source_path = os.path.join(self.directory, '_test.py') + self.bc_path = self.source_path + ('c' if __debug__ else 'o') + with open(self.source_path, 'w') as file: + file.write('x = 123\n') + self.source_path2 = os.path.join(self.directory, '_test2.py') + self.bc_path2 = self.source_path2 + ('c' if __debug__ else 'o') + shutil.copyfile(self.source_path, self.source_path2) + + def tearDown(self): + shutil.rmtree(self.directory) + + def data(self): + with open(self.bc_path, 'rb') as file: + data = file.read(8) + mtime = int(os.stat(self.source_path).st_mtime) + compare = struct.pack('<4sl', imp.get_magic(), mtime) + return data, compare + + def recreation_check(self, metadata): + """Check that compileall recreates bytecode when the new metadata is + used.""" + if not hasattr(os, 'stat'): + return + py_compile.compile(self.source_path) + self.assertEqual(*self.data()) + with open(self.bc_path, 'rb') as file: + bc = file.read()[len(metadata):] + with open(self.bc_path, 'wb') as file: + file.write(metadata) + file.write(bc) + self.assertNotEqual(*self.data()) + compileall.compile_dir(self.directory, force=False, quiet=True) + self.assertTrue(*self.data()) + + def test_mtime(self): + # Test a change in mtime leads to a new .pyc. + self.recreation_check(struct.pack('<4sl', imp.get_magic(), 1)) + + def test_magic_number(self): + # Test a change in mtime leads to a new .pyc. + self.recreation_check(b'\0\0\0\0') + + def test_compile_files(self): + # Test compiling a single file, and complete directory + for fn in (self.bc_path, self.bc_path2): + try: + os.unlink(fn) + except: + pass + compileall.compile_file(self.source_path, force=False, quiet=True) + self.assertTrue(os.path.isfile(self.bc_path) \ + and not os.path.isfile(self.bc_path2)) + os.unlink(self.bc_path) + compileall.compile_dir(self.directory, force=False, quiet=True) + self.assertTrue(os.path.isfile(self.bc_path) \ + and os.path.isfile(self.bc_path2)) + os.unlink(self.bc_path) + os.unlink(self.bc_path2) + +def test_main(): + test_support.run_unittest(CompileallTests) + + +if __name__ == "__main__": + test_main() -- cgit v1.2.3