]> granicus.if.org Git - python/commitdiff
More fixes for PEP 3147 compliance in packaging (#11254)
authorÉric Araujo <merwok@netwok.org>
Wed, 19 Oct 2011 06:18:05 +0000 (08:18 +0200)
committerÉric Araujo <merwok@netwok.org>
Wed, 19 Oct 2011 06:18:05 +0000 (08:18 +0200)
Lib/packaging/command/build_py.py
Lib/packaging/command/install_lib.py
Lib/packaging/tests/test_command_build_py.py
Lib/packaging/tests/test_command_install_dist.py

index 0eafffa3ae70db3a39318ecd9af3a7893bb84a6d..e5b10b0048bc2296d7e40a08f0f003166b99dd9c 100644 (file)
@@ -1,6 +1,7 @@
 """Build pure Python modules (just copy to build directory)."""
 
 import os
+import imp
 import sys
 from glob import glob
 
@@ -330,9 +331,10 @@ class build_py(Command, Mixin2to3):
             outputs.append(filename)
             if include_bytecode:
                 if self.compile:
-                    outputs.append(filename + "c")
+                    outputs.append(imp.cache_from_source(filename))
                 if self.optimize > 0:
-                    outputs.append(filename + "o")
+                    outputs.append(imp.cache_from_source(filename,
+                                                         debug_override=False))
 
         outputs += [
             os.path.join(build_dir, filename)
index 5e81b419392208419945a46545c6c69d7639bc4c..558966dfe2b5be50a9071b5fbd16a9beb9771ff3 100644 (file)
@@ -1,6 +1,7 @@
 """Install all modules (extensions and pure Python)."""
 
 import os
+import imp
 import sys
 import logging
 
@@ -172,9 +173,10 @@ class install_lib(Command):
             if ext != PYTHON_SOURCE_EXTENSION:
                 continue
             if self.compile:
-                bytecode_files.append(py_file + "c")
+                bytecode_files.append(imp.cache_from_source(py_file))
             if self.optimize > 0:
-                bytecode_files.append(py_file + "o")
+                bytecode_files.append(imp.cache_from_source(
+                    py_file, debug_override=False))
 
         return bytecode_files
 
index a978c9160279eaf2833928753466878d33a1af10..9d519e3885bf3207ec67b353325203bbcb0702f9 100644 (file)
@@ -102,6 +102,40 @@ class BuildPyTestCase(support.TempdirManager,
             os.chdir(cwd)
             sys.stdout = old_stdout
 
+    @unittest.skipIf(sys.dont_write_bytecode, 'byte-compile disabled')
+    def test_byte_compile(self):
+        project_dir, dist = self.create_dist(py_modules=['boiledeggs'])
+        os.chdir(project_dir)
+        self.write_file('boiledeggs.py', 'import antigravity')
+        cmd = build_py(dist)
+        cmd.compile = True
+        cmd.build_lib = 'here'
+        cmd.finalize_options()
+        cmd.run()
+
+        found = os.listdir(cmd.build_lib)
+        self.assertEqual(sorted(found), ['__pycache__', 'boiledeggs.py'])
+        found = os.listdir(os.path.join(cmd.build_lib, '__pycache__'))
+        self.assertEqual(found, ['boiledeggs.%s.pyc' % imp.get_tag()])
+
+    @unittest.skipIf(sys.dont_write_bytecode, 'byte-compile disabled')
+    def test_byte_compile_optimized(self):
+        project_dir, dist = self.create_dist(py_modules=['boiledeggs'])
+        os.chdir(project_dir)
+        self.write_file('boiledeggs.py', 'import antigravity')
+        cmd = build_py(dist)
+        cmd.compile = True
+        cmd.optimize = 1
+        cmd.build_lib = 'here'
+        cmd.finalize_options()
+        cmd.run()
+
+        found = os.listdir(cmd.build_lib)
+        self.assertEqual(sorted(found), ['__pycache__', 'boiledeggs.py'])
+        found = os.listdir(os.path.join(cmd.build_lib, '__pycache__'))
+        self.assertEqual(sorted(found), ['boiledeggs.%s.pyc' % imp.get_tag(),
+                                         'boiledeggs.%s.pyo' % imp.get_tag()])
+
     def test_dont_write_bytecode(self):
         # makes sure byte_compile is not used
         pkg_dir, dist = self.create_dist()
@@ -118,6 +152,7 @@ class BuildPyTestCase(support.TempdirManager,
 
         self.assertIn('byte-compiling is disabled', self.get_logs()[0])
 
+
 def test_suite():
     return unittest.makeSuite(BuildPyTestCase)
 
index 808b568cdb908efa4753aaa61611524c7e04fbab..496a3d800f5907ac4a213ea4baf0eefb5f2e8e81 100644 (file)
@@ -1,6 +1,7 @@
 """Tests for packaging.command.install."""
 
 import os
+import imp
 import sys
 from sysconfig import (get_scheme_names, get_config_vars,
                        _SCHEMES, get_config_var, get_path)
@@ -181,9 +182,11 @@ class InstallTestCase(support.TempdirManager,
     def test_old_record(self):
         # test pre-PEP 376 --record option (outside dist-info dir)
         install_dir = self.mkdtemp()
-        project_dir, dist = self.create_dist(scripts=['hello'])
+        project_dir, dist = self.create_dist(py_modules=['hello'],
+                                             scripts=['sayhi'])
         os.chdir(project_dir)
-        self.write_file('hello', "print('o hai')")
+        self.write_file('hello.py', "def main(): print('o hai')")
+        self.write_file('sayhi', 'from hello import main; main()')
 
         cmd = install_dist(dist)
         dist.command_obj['install_dist'] = cmd
@@ -196,8 +199,9 @@ class InstallTestCase(support.TempdirManager,
             content = f.read()
 
         found = [os.path.basename(line) for line in content.splitlines()]
-        expected = ['hello', 'METADATA', 'INSTALLER', 'REQUESTED', 'RECORD']
-        self.assertEqual(found, expected)
+        expected = ['hello.py', 'hello.%s.pyc' % imp.get_tag(), 'sayhi',
+                    'METADATA', 'INSTALLER', 'REQUESTED', 'RECORD']
+        self.assertEqual(sorted(found), sorted(expected))
 
         # XXX test that fancy_getopt is okay with options named
         # record and no-record but unrelated