ยปCore Development>Code coverage>Lib/packaging/tests/test_command_install_lib.py

Python code coverage for Lib/packaging/tests/test_command_install_lib.py

#countcontent
1n/a"""Tests for packaging.command.install_data."""
2n/aimport os
3n/aimport sys
4n/aimport imp
5n/a
6n/afrom packaging.tests import unittest, support
7n/afrom packaging.command.install_lib import install_lib
8n/afrom packaging.compiler.extension import Extension
9n/afrom packaging.errors import PackagingOptionError
10n/a
11n/a
12n/aclass InstallLibTestCase(support.TempdirManager,
13n/a support.LoggingCatcher,
14n/a support.EnvironRestorer,
15n/a unittest.TestCase):
16n/a
17n/a restore_environ = ['PYTHONPATH']
18n/a
19n/a def test_finalize_options(self):
20n/a dist = self.create_dist()[1]
21n/a cmd = install_lib(dist)
22n/a
23n/a cmd.finalize_options()
24n/a self.assertTrue(cmd.compile)
25n/a self.assertEqual(cmd.optimize, 0)
26n/a
27n/a # optimize must be 0, 1, or 2
28n/a cmd.optimize = 'foo'
29n/a self.assertRaises(PackagingOptionError, cmd.finalize_options)
30n/a cmd.optimize = '4'
31n/a self.assertRaises(PackagingOptionError, cmd.finalize_options)
32n/a
33n/a cmd.optimize = '2'
34n/a cmd.finalize_options()
35n/a self.assertEqual(cmd.optimize, 2)
36n/a
37n/a def test_byte_compile(self):
38n/a project_dir, dist = self.create_dist()
39n/a os.chdir(project_dir)
40n/a cmd = install_lib(dist)
41n/a cmd.compile = True
42n/a cmd.optimize = 1
43n/a
44n/a f = os.path.join(project_dir, 'foo.py')
45n/a self.write_file(f, '# python file')
46n/a cmd.byte_compile([f])
47n/a pyc_file = imp.cache_from_source('foo.py', True)
48n/a pyo_file = imp.cache_from_source('foo.py', False)
49n/a self.assertTrue(os.path.exists(pyc_file))
50n/a self.assertTrue(os.path.exists(pyo_file))
51n/a
52n/a def test_byte_compile_under_B(self):
53n/a # make sure byte compilation works under -B (dont_write_bytecode)
54n/a self.addCleanup(setattr, sys, 'dont_write_bytecode',
55n/a sys.dont_write_bytecode)
56n/a sys.dont_write_bytecode = True
57n/a self.test_byte_compile()
58n/a
59n/a def test_get_outputs(self):
60n/a project_dir, dist = self.create_dist()
61n/a os.chdir(project_dir)
62n/a os.mkdir('spam')
63n/a cmd = install_lib(dist)
64n/a
65n/a # setting up a dist environment
66n/a cmd.compile = True
67n/a cmd.optimize = 1
68n/a cmd.install_dir = self.mkdtemp()
69n/a f = os.path.join(project_dir, 'spam', '__init__.py')
70n/a self.write_file(f, '# python package')
71n/a cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
72n/a cmd.distribution.packages = ['spam']
73n/a
74n/a # make sure the build_lib is set the temp dir # XXX what? this is not
75n/a # needed in the same distutils test and should work without manual
76n/a # intervention
77n/a build_dir = os.path.split(project_dir)[0]
78n/a cmd.get_finalized_command('build_py').build_lib = build_dir
79n/a
80n/a # get_outputs should return 4 elements: spam/__init__.py, .pyc and
81n/a # .pyo, foo.import-tag-abiflags.so / foo.pyd
82n/a outputs = cmd.get_outputs()
83n/a self.assertEqual(len(outputs), 4, outputs)
84n/a
85n/a def test_get_inputs(self):
86n/a project_dir, dist = self.create_dist()
87n/a os.chdir(project_dir)
88n/a os.mkdir('spam')
89n/a cmd = install_lib(dist)
90n/a
91n/a # setting up a dist environment
92n/a cmd.compile = True
93n/a cmd.optimize = 1
94n/a cmd.install_dir = self.mkdtemp()
95n/a f = os.path.join(project_dir, 'spam', '__init__.py')
96n/a self.write_file(f, '# python package')
97n/a cmd.distribution.ext_modules = [Extension('foo', ['xxx'])]
98n/a cmd.distribution.packages = ['spam']
99n/a
100n/a # get_inputs should return 2 elements: spam/__init__.py and
101n/a # foo.import-tag-abiflags.so / foo.pyd
102n/a inputs = cmd.get_inputs()
103n/a self.assertEqual(len(inputs), 2, inputs)
104n/a
105n/a
106n/adef test_suite():
107n/a return unittest.makeSuite(InstallLibTestCase)
108n/a
109n/aif __name__ == "__main__":
110n/a unittest.main(defaultTest="test_suite")