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

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

#countcontent
1n/a"""Tests for packaging.run."""
2n/a
3n/aimport os
4n/aimport sys
5n/afrom io import StringIO
6n/a
7n/afrom packaging import install
8n/afrom packaging.tests import unittest, support
9n/afrom packaging.run import main
10n/a
11n/afrom test.script_helper import assert_python_ok
12n/a
13n/a# setup script that uses __file__
14n/asetup_using___file__ = """\
15n/a__file__
16n/a
17n/afrom packaging.run import setup
18n/asetup()
19n/a"""
20n/a
21n/asetup_prints_cwd = """\
22n/aimport os
23n/aprint os.getcwd()
24n/a
25n/afrom packaging.run import setup
26n/asetup()
27n/a"""
28n/a
29n/a
30n/aclass RunTestCase(support.TempdirManager,
31n/a support.LoggingCatcher,
32n/a unittest.TestCase):
33n/a
34n/a def setUp(self):
35n/a super(RunTestCase, self).setUp()
36n/a self.old_argv = sys.argv, sys.argv[:]
37n/a
38n/a def tearDown(self):
39n/a sys.argv = self.old_argv[0]
40n/a sys.argv[:] = self.old_argv[1]
41n/a super(RunTestCase, self).tearDown()
42n/a
43n/a # TODO restore the tests removed six months ago and port them to pysetup
44n/a
45n/a def test_install(self):
46n/a # making sure install returns 0 or 1 exit codes
47n/a project = os.path.join(os.path.dirname(__file__), 'package.tgz')
48n/a install_path = self.mkdtemp()
49n/a old_get_path = install.get_path
50n/a install.get_path = lambda path: install_path
51n/a old_mod = os.stat(install_path).st_mode
52n/a os.chmod(install_path, 0)
53n/a old_stderr = sys.stderr
54n/a sys.stderr = StringIO()
55n/a try:
56n/a self.assertFalse(install.install(project))
57n/a self.assertEqual(main(['install', 'blabla']), 1)
58n/a finally:
59n/a sys.stderr = old_stderr
60n/a os.chmod(install_path, old_mod)
61n/a install.get_path = old_get_path
62n/a
63n/a def test_show_help(self):
64n/a # smoke test, just makes sure some help is displayed
65n/a status, out, err = assert_python_ok('-m', 'packaging.run', '--help')
66n/a self.assertEqual(status, 0)
67n/a self.assertGreater(out, b'')
68n/a self.assertEqual(err, b'')
69n/a
70n/a def test_list_commands(self):
71n/a status, out, err = assert_python_ok('-m', 'packaging.run', 'run',
72n/a '--list-commands')
73n/a # check that something is displayed
74n/a self.assertEqual(status, 0)
75n/a self.assertGreater(out, b'')
76n/a self.assertEqual(err, b'')
77n/a
78n/a # make sure the manual grouping of commands is respected
79n/a check_position = out.find(b' check: ')
80n/a build_position = out.find(b' build: ')
81n/a self.assertTrue(check_position, out) # "out" printed as debugging aid
82n/a self.assertTrue(build_position, out)
83n/a self.assertLess(check_position, build_position, out)
84n/a
85n/a # TODO test that custom commands don't break --list-commands
86n/a
87n/a
88n/adef test_suite():
89n/a return unittest.makeSuite(RunTestCase)
90n/a
91n/aif __name__ == "__main__":
92n/a unittest.main(defaultTest="test_suite")