summaryrefslogtreecommitdiff
path: root/AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py
diff options
context:
space:
mode:
authordarylm503 <darylm503@6f19259b-4bc3-4df7-8a09-765794883524>2012-04-16 22:12:42 +0000
committerdarylm503 <darylm503@6f19259b-4bc3-4df7-8a09-765794883524>2012-04-16 22:12:42 +0000
commit4710c53dcad1ebf3755f3efb9e80ac24bd72a9b2 (patch)
tree2d17d2388a78082e32f6a97120d707328143543b /AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py
parentcbc6b5e54599c7391ece99ad3c5313f4dd4ddda6 (diff)
downloadedk2-platforms-4710c53dcad1ebf3755f3efb9e80ac24bd72a9b2.tar.xz
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
Diffstat (limited to 'AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py')
-rw-r--r--AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_compileall.py80
1 files changed, 80 insertions, 0 deletions
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()