1 | """Use the AllModules plugin by passing ``--all-modules`` or setting the |
---|
2 | NOSE_ALL_MODULES environment variable to enable collection and execution of |
---|
3 | tests in all python modules. Normal nose behavior is to look for tests only in |
---|
4 | modules that match testMatch. |
---|
5 | |
---|
6 | More information: :doc:`../doc_tests/test_allmodules/test_allmodules` |
---|
7 | |
---|
8 | .. warning :: |
---|
9 | |
---|
10 | This plugin can have surprising interactions with plugins that load tests |
---|
11 | from what nose normally considers non-test modules, such as |
---|
12 | the :doc:`doctest plugin <doctests>`. This is because any given |
---|
13 | object in a module can't be loaded both by a plugin and the normal nose |
---|
14 | :class:`test loader <nose.loader.TestLoader>`. Also, if you have functions |
---|
15 | or classes in non-test modules that look like tests but aren't, you will |
---|
16 | likely see errors as nose attempts to run them as tests. |
---|
17 | |
---|
18 | """ |
---|
19 | |
---|
20 | import os |
---|
21 | from nose.plugins.base import Plugin |
---|
22 | |
---|
23 | class AllModules(Plugin): |
---|
24 | """Collect tests from all python modules. |
---|
25 | """ |
---|
26 | def options(self, parser, env): |
---|
27 | """Register commandline options. |
---|
28 | """ |
---|
29 | env_opt = 'NOSE_ALL_MODULES' |
---|
30 | parser.add_option('--all-modules', |
---|
31 | action="store_true", |
---|
32 | dest=self.enableOpt, |
---|
33 | default=env.get(env_opt), |
---|
34 | help="Enable plugin %s: %s [%s]" % |
---|
35 | (self.__class__.__name__, self.help(), env_opt)) |
---|
36 | |
---|
37 | def wantFile(self, file): |
---|
38 | """Override to return True for all files ending with .py""" |
---|
39 | # always want .py files |
---|
40 | if file.endswith('.py'): |
---|
41 | return True |
---|
42 | |
---|
43 | def wantModule(self, module): |
---|
44 | """Override return True for all modules""" |
---|
45 | return True |
---|