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

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

#countcontent
1n/a"""Tests for distutils.command.build_scripts."""
2n/a
3n/aimport os
4n/aimport sys
5n/aimport sysconfig
6n/afrom packaging.dist import Distribution
7n/afrom packaging.command.build_scripts import build_scripts
8n/a
9n/afrom packaging.tests import unittest, support
10n/a
11n/a
12n/aclass BuildScriptsTestCase(support.TempdirManager,
13n/a support.LoggingCatcher,
14n/a unittest.TestCase):
15n/a
16n/a def test_default_settings(self):
17n/a cmd = self.get_build_scripts_cmd("/foo/bar", [])
18n/a self.assertFalse(cmd.force)
19n/a self.assertIs(cmd.build_dir, None)
20n/a
21n/a cmd.finalize_options()
22n/a
23n/a self.assertTrue(cmd.force)
24n/a self.assertEqual(cmd.build_dir, "/foo/bar")
25n/a
26n/a def test_build(self):
27n/a source = self.mkdtemp()
28n/a target = self.mkdtemp()
29n/a expected = self.write_sample_scripts(source)
30n/a
31n/a cmd = self.get_build_scripts_cmd(target,
32n/a [os.path.join(source, fn)
33n/a for fn in expected])
34n/a cmd.finalize_options()
35n/a cmd.run()
36n/a
37n/a built = os.listdir(target)
38n/a for name in expected:
39n/a self.assertIn(name, built)
40n/a
41n/a def get_build_scripts_cmd(self, target, scripts):
42n/a dist = Distribution()
43n/a dist.scripts = scripts
44n/a dist.command_obj["build"] = support.DummyCommand(
45n/a build_scripts=target,
46n/a force=True,
47n/a executable=sys.executable,
48n/a use_2to3=False,
49n/a use_2to3_fixers=None,
50n/a convert_2to3_doctests=None
51n/a )
52n/a return build_scripts(dist)
53n/a
54n/a def write_sample_scripts(self, dir):
55n/a expected = []
56n/a expected.append("script1.py")
57n/a self.write_script(dir, "script1.py",
58n/a ("#! /usr/bin/env python2.3\n"
59n/a "# bogus script w/ Python sh-bang\n"
60n/a "pass\n"))
61n/a expected.append("script2.py")
62n/a self.write_script(dir, "script2.py",
63n/a ("#!/usr/bin/python\n"
64n/a "# bogus script w/ Python sh-bang\n"
65n/a "pass\n"))
66n/a expected.append("shell.sh")
67n/a self.write_script(dir, "shell.sh",
68n/a ("#!/bin/sh\n"
69n/a "# bogus shell script w/ sh-bang\n"
70n/a "exit 0\n"))
71n/a return expected
72n/a
73n/a def write_script(self, dir, name, text):
74n/a with open(os.path.join(dir, name), "w") as f:
75n/a f.write(text)
76n/a
77n/a def test_version_int(self):
78n/a source = self.mkdtemp()
79n/a target = self.mkdtemp()
80n/a expected = self.write_sample_scripts(source)
81n/a
82n/a
83n/a cmd = self.get_build_scripts_cmd(target,
84n/a [os.path.join(source, fn)
85n/a for fn in expected])
86n/a cmd.finalize_options()
87n/a
88n/a # http://bugs.python.org/issue4524
89n/a #
90n/a # On linux-g++-32 with command line `./configure --enable-ipv6
91n/a # --with-suffix=3`, python is compiled okay but the build scripts
92n/a # failed when writing the name of the executable
93n/a old = sysconfig.get_config_vars().get('VERSION')
94n/a sysconfig._CONFIG_VARS['VERSION'] = 4
95n/a try:
96n/a cmd.run()
97n/a finally:
98n/a if old is not None:
99n/a sysconfig._CONFIG_VARS['VERSION'] = old
100n/a
101n/a built = os.listdir(target)
102n/a for name in expected:
103n/a self.assertIn(name, built)
104n/a
105n/adef test_suite():
106n/a return unittest.makeSuite(BuildScriptsTestCase)
107n/a
108n/aif __name__ == "__main__":
109n/a unittest.main(defaultTest="test_suite")