(original) (raw)
changeset: 73003:1cc4d822123b user: Γric Araujo merwok@netwok.org date: Wed Oct 19 08π05 2011 +0200 files: 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 description: More fixes for PEP 3147 compliance in packaging (#11254) diff -r 1405df4a1535 -r 1cc4d822123b Lib/packaging/command/build_py.py --- a/Lib/packaging/command/build_py.py Wed Oct 19 06:46:13 2011 +0200 +++ b/Lib/packaging/command/build_py.py Wed Oct 19 08π05 2011 +0200 @@ -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 @@ 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) diff -r 1405df4a1535 -r 1cc4d822123b Lib/packaging/command/install_lib.py --- a/Lib/packaging/command/install_lib.py Wed Oct 19 06:46:13 2011 +0200 +++ b/Lib/packaging/command/install_lib.py Wed Oct 19 08π05 2011 +0200 @@ -1,6 +1,7 @@ """Install all modules (extensions and pure Python).""" import os +import imp import sys import logging @@ -172,9 +173,10 @@ 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 diff -r 1405df4a1535 -r 1cc4d822123b Lib/packaging/tests/test_command_build_py.py --- a/Lib/packaging/tests/test_command_build_py.py Wed Oct 19 06:46:13 2011 +0200 +++ b/Lib/packaging/tests/test_command_build_py.py Wed Oct 19 08π05 2011 +0200 @@ -102,6 +102,40 @@ 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 @@ self.assertIn('byte-compiling is disabled', self.get_logs()[0]) + def test_suite(): return unittest.makeSuite(BuildPyTestCase) diff -r 1405df4a1535 -r 1cc4d822123b Lib/packaging/tests/test_command_install_dist.py --- a/Lib/packaging/tests/test_command_install_dist.py Wed Oct 19 06:46:13 2011 +0200 +++ b/Lib/packaging/tests/test_command_install_dist.py Wed Oct 19 08π05 2011 +0200 @@ -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 @@ 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 @@ 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 /merwok@netwok.org