diff options
author | Jason Pellerin <jpellerin@gmail.com> | 2009-04-18 19:00:45 +0000 |
---|---|---|
committer | Jason Pellerin <jpellerin@gmail.com> | 2009-04-18 19:00:45 +0000 |
commit | c5bd03442781ce1c974920708e958d58d1ff6289 (patch) | |
tree | 04041c48ada439b6ca6510bb34007f7dd94b33be /nose/plugins/allmodules.py | |
parent | 296fee10bf942cf860326c88d5c5df6e906a8c7b (diff) | |
download | nose-c5bd03442781ce1c974920708e958d58d1ff6289.tar.gz |
Committed PyCon sprint work.
Diffstat (limited to 'nose/plugins/allmodules.py')
-rw-r--r-- | nose/plugins/allmodules.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/nose/plugins/allmodules.py b/nose/plugins/allmodules.py new file mode 100644 index 0000000..320b21a --- /dev/null +++ b/nose/plugins/allmodules.py @@ -0,0 +1,45 @@ +"""Use the AllModules plugin by passing :option:`--all-modules` or setting the +NOSE_ALL_MODULES environment variable to enable collection and execution of +tests in all python modules. Normal nose behavior is to look for tests only in +modules that match testMatch. + +See also: :doc:`../doc_tests/test_allmodules/test_allmodules` + +.. warning :: + + This plugin can have surprising interactions with plugins that load tests + from what nose normally considers non-test modules, such as + the :doc:`doctest plugin <doctests>`. This is because any given + object in a module can't be loaded both by a plugin and the normal nose + :class:`test loader <nose.loader.TestLoader>`. Also, if you have test-like + functions or classes in non-test modules that are not tests, you will + likely see errors as nose attempts to run them as tests. + +""" + +import os +from nose.plugins.base import Plugin + +class AllModules(Plugin): + """Collect tests from all python modules. + """ + def options(self, parser, env): + """Register commandline options. + """ + env_opt = 'NOSE_ALL_MODULES' + parser.add_option('--all-modules', + action="store_true", + dest=self.enableOpt, + default=env.get(env_opt), + help="Enable plugin %s: %s [%s]" % + (self.__class__.__name__, self.help(), env_opt)) + + def wantFile(self, file): + """Override to return True for all files ending with .py""" + # always want .py files + if file.endswith('.py'): + return True + + def wantModule(self, module): + """Override return True for all modules""" + return True |