1
1
"""Tests for distutils.command.install."""
9
8
from test.support import captured_stdout, run_unittest
10
from distutils import sysconfig
11
11
from distutils.command.install import install
12
12
from distutils.command import install as install_module
13
from distutils.command.build_ext import build_ext
13
14
from distutils.command.install import INSTALL_SCHEMES
14
15
from distutils.core import Distribution
15
16
from distutils.errors import DistutilsOptionError
17
from distutils.extension import Extension
17
19
from distutils.tests import support
22
def _make_ext_name(modname):
24
if sys.executable.endswith('_d.exe'):
26
return modname + sysconfig.get_config_var('SO')
19
29
class InstallTestCase(support.TempdirManager,
20
30
support.EnvironGuard,
21
31
support.LoggingSilencer,
167
177
self.assertRaises(DistutilsOptionError, cmd.finalize_options)
169
179
def test_record(self):
171
install_dir = self.mkdtemp()
172
pkgdir, dist = self.create_dist()
174
dist = Distribution()
176
dist.command_obj['install'] = cmd
177
cmd.root = install_dir
178
cmd.record = os.path.join(pkgdir, 'RECORD')
179
cmd.ensure_finalized()
183
# let's check the RECORD file was created with one
184
# line (the egg info file)
187
self.assertEqual(len(f.readlines()), 1)
180
install_dir = self.mkdtemp()
181
project_dir, dist = self.create_dist(scripts=['hello'])
182
self.addCleanup(os.chdir, os.getcwd())
183
os.chdir(project_dir)
184
self.write_file('hello', "print('o hai')")
187
dist.command_obj['install'] = cmd
188
cmd.root = install_dir
189
cmd.record = os.path.join(project_dir, 'RECORD')
190
cmd.ensure_finalized()
199
found = [os.path.basename(line) for line in content.splitlines()]
201
'UNKNOWN-0.0.0-py%s.%s.egg-info' % sys.version_info[:2]]
202
self.assertEqual(found, expected)
204
def test_record_extensions(self):
205
install_dir = self.mkdtemp()
206
project_dir, dist = self.create_dist(ext_modules=[
207
Extension('xx', ['xxmodule.c'])])
208
self.addCleanup(os.chdir, os.getcwd())
209
os.chdir(project_dir)
210
support.copy_xxmodule_c(project_dir)
212
buildextcmd = build_ext(dist)
213
support.fixup_build_ext(buildextcmd)
214
buildextcmd.ensure_finalized()
217
dist.command_obj['install'] = cmd
218
dist.command_obj['build_ext'] = buildextcmd
219
cmd.root = install_dir
220
cmd.record = os.path.join(project_dir, 'RECORD')
221
cmd.ensure_finalized()
230
found = [os.path.basename(line) for line in content.splitlines()]
231
expected = [_make_ext_name('xx'),
232
'UNKNOWN-0.0.0-py%s.%s.egg-info' % sys.version_info[:2]]
233
self.assertEqual(found, expected)
191
235
def test_debug_mode(self):
192
236
# this covers the code called when DEBUG is set
193
237
old_logs_len = len(self.logs)
194
238
install_module.DEBUG = True
196
with captured_stdout() as stdout:
240
with captured_stdout():
197
241
self.test_record()
199
243
install_module.DEBUG = False