mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
More fixes for PEP 3147 compliance in packaging (#11254)
This commit is contained in:
parent
8ccd18fff3
commit
4b5a5f7bd5
4 changed files with 51 additions and 8 deletions
|
@ -1,6 +1,7 @@
|
||||||
"""Build pure Python modules (just copy to build directory)."""
|
"""Build pure Python modules (just copy to build directory)."""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import imp
|
||||||
import sys
|
import sys
|
||||||
from glob import glob
|
from glob import glob
|
||||||
|
|
||||||
|
@ -330,9 +331,10 @@ class build_py(Command, Mixin2to3):
|
||||||
outputs.append(filename)
|
outputs.append(filename)
|
||||||
if include_bytecode:
|
if include_bytecode:
|
||||||
if self.compile:
|
if self.compile:
|
||||||
outputs.append(filename + "c")
|
outputs.append(imp.cache_from_source(filename))
|
||||||
if self.optimize > 0:
|
if self.optimize > 0:
|
||||||
outputs.append(filename + "o")
|
outputs.append(imp.cache_from_source(filename,
|
||||||
|
debug_override=False))
|
||||||
|
|
||||||
outputs += [
|
outputs += [
|
||||||
os.path.join(build_dir, filename)
|
os.path.join(build_dir, filename)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""Install all modules (extensions and pure Python)."""
|
"""Install all modules (extensions and pure Python)."""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import imp
|
||||||
import sys
|
import sys
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -172,9 +173,10 @@ class install_lib(Command):
|
||||||
if ext != PYTHON_SOURCE_EXTENSION:
|
if ext != PYTHON_SOURCE_EXTENSION:
|
||||||
continue
|
continue
|
||||||
if self.compile:
|
if self.compile:
|
||||||
bytecode_files.append(py_file + "c")
|
bytecode_files.append(imp.cache_from_source(py_file))
|
||||||
if self.optimize > 0:
|
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
|
return bytecode_files
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,40 @@ class BuildPyTestCase(support.TempdirManager,
|
||||||
os.chdir(cwd)
|
os.chdir(cwd)
|
||||||
sys.stdout = old_stdout
|
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):
|
def test_dont_write_bytecode(self):
|
||||||
# makes sure byte_compile is not used
|
# makes sure byte_compile is not used
|
||||||
pkg_dir, dist = self.create_dist()
|
pkg_dir, dist = self.create_dist()
|
||||||
|
@ -118,6 +152,7 @@ class BuildPyTestCase(support.TempdirManager,
|
||||||
|
|
||||||
self.assertIn('byte-compiling is disabled', self.get_logs()[0])
|
self.assertIn('byte-compiling is disabled', self.get_logs()[0])
|
||||||
|
|
||||||
|
|
||||||
def test_suite():
|
def test_suite():
|
||||||
return unittest.makeSuite(BuildPyTestCase)
|
return unittest.makeSuite(BuildPyTestCase)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
"""Tests for packaging.command.install."""
|
"""Tests for packaging.command.install."""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import imp
|
||||||
import sys
|
import sys
|
||||||
from sysconfig import (get_scheme_names, get_config_vars,
|
from sysconfig import (get_scheme_names, get_config_vars,
|
||||||
_SCHEMES, get_config_var, get_path)
|
_SCHEMES, get_config_var, get_path)
|
||||||
|
@ -181,9 +182,11 @@ class InstallTestCase(support.TempdirManager,
|
||||||
def test_old_record(self):
|
def test_old_record(self):
|
||||||
# test pre-PEP 376 --record option (outside dist-info dir)
|
# test pre-PEP 376 --record option (outside dist-info dir)
|
||||||
install_dir = self.mkdtemp()
|
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)
|
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)
|
cmd = install_dist(dist)
|
||||||
dist.command_obj['install_dist'] = cmd
|
dist.command_obj['install_dist'] = cmd
|
||||||
|
@ -196,8 +199,9 @@ class InstallTestCase(support.TempdirManager,
|
||||||
content = f.read()
|
content = f.read()
|
||||||
|
|
||||||
found = [os.path.basename(line) for line in content.splitlines()]
|
found = [os.path.basename(line) for line in content.splitlines()]
|
||||||
expected = ['hello', 'METADATA', 'INSTALLER', 'REQUESTED', 'RECORD']
|
expected = ['hello.py', 'hello.%s.pyc' % imp.get_tag(), 'sayhi',
|
||||||
self.assertEqual(found, expected)
|
'METADATA', 'INSTALLER', 'REQUESTED', 'RECORD']
|
||||||
|
self.assertEqual(sorted(found), sorted(expected))
|
||||||
|
|
||||||
# XXX test that fancy_getopt is okay with options named
|
# XXX test that fancy_getopt is okay with options named
|
||||||
# record and no-record but unrelated
|
# record and no-record but unrelated
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue