ยปCore Development>Code coverage>Lib/packaging/command/test.py

Python code coverage for Lib/packaging/command/test.py

#countcontent
1n/a"""Run the project's test suite."""
2n/a
3n/aimport os
4n/aimport sys
5n/aimport logging
6n/aimport unittest
7n/a
8n/afrom packaging import logger
9n/afrom packaging.command.cmd import Command
10n/afrom packaging.database import get_distribution
11n/afrom packaging.errors import PackagingOptionError
12n/afrom packaging.util import resolve_name
13n/a
14n/a
15n/aclass test(Command):
16n/a
17n/a description = "run the project's test suite"
18n/a
19n/a user_options = [
20n/a ('suite=', 's',
21n/a "test suite to run (for example: 'some_module.test_suite')"),
22n/a ('runner=', None,
23n/a "test runner to be called."),
24n/a ('tests-require=', None,
25n/a "list of distributions required to run the test suite."),
26n/a ]
27n/a
28n/a def initialize_options(self):
29n/a self.suite = None
30n/a self.runner = None
31n/a self.tests_require = []
32n/a
33n/a def finalize_options(self):
34n/a self.build_lib = self.get_finalized_command("build").build_lib
35n/a for requirement in self.tests_require:
36n/a if get_distribution(requirement) is None:
37n/a logger.warning("test dependency %s is not installed, "
38n/a "tests may fail", requirement)
39n/a if (not self.suite and not self.runner and
40n/a self.get_ut_with_discovery() is None):
41n/a raise PackagingOptionError(
42n/a "no test discovery available, please give a 'suite' or "
43n/a "'runner' option or install unittest2")
44n/a
45n/a def get_ut_with_discovery(self):
46n/a if hasattr(unittest.TestLoader, "discover"):
47n/a return unittest
48n/a else:
49n/a try:
50n/a import unittest2
51n/a return unittest2
52n/a except ImportError:
53n/a return None
54n/a
55n/a def run(self):
56n/a prev_syspath = sys.path[:]
57n/a try:
58n/a # build release
59n/a build = self.reinitialize_command('build')
60n/a self.run_command('build')
61n/a sys.path.insert(0, build.build_lib)
62n/a
63n/a # XXX maybe we could pass the verbose argument of pysetup here
64n/a logger = logging.getLogger('packaging')
65n/a verbose = logger.getEffectiveLevel() >= logging.DEBUG
66n/a verbosity = verbose + 1
67n/a
68n/a # run the tests
69n/a if self.runner:
70n/a resolve_name(self.runner)()
71n/a elif self.suite:
72n/a runner = unittest.TextTestRunner(verbosity=verbosity)
73n/a runner.run(resolve_name(self.suite)())
74n/a elif self.get_ut_with_discovery():
75n/a ut = self.get_ut_with_discovery()
76n/a test_suite = ut.TestLoader().discover(os.curdir)
77n/a runner = ut.TextTestRunner(verbosity=verbosity)
78n/a runner.run(test_suite)
79n/a finally:
80n/a sys.path[:] = prev_syspath