diff options
-rw-r--r-- | coverage/control.py | 39 | ||||
-rw-r--r-- | coverage/plugin.py | 37 | ||||
-rw-r--r-- | tests/test_plugins.py | 7 |
3 files changed, 43 insertions, 40 deletions
diff --git a/coverage/control.py b/coverage/control.py index 26f2fc7e..ef430150 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -15,7 +15,7 @@ from coverage.collector import Collector from coverage.config import CoverageConfig from coverage.data import CoverageData from coverage.debug import DebugControl -from coverage.plugin import CoveragePlugin, Plugins +from coverage.plugin import CoveragePlugin from coverage.files import FileLocator, TreeMatcher, FnmatchMatcher from coverage.files import PathAliases, find_python_files, prep_patterns from coverage.files import ModuleMatcher @@ -989,3 +989,40 @@ def process_startup(): # A hack for debugging testing in sub-processes. _TEST_NAME_FILE = "" # "/tmp/covtest.txt" + + +class Plugins(object): + """The currently loaded collection of coverage.py plugins.""" + + def __init__(self): + self.order = [] + self.names = {} + + @classmethod + def load_plugins(cls, modules, config): + """Load plugins from `modules`. + + Returns a list of loaded and configured plugins. + + """ + plugins = cls() + + for module in modules: + __import__(module) + mod = sys.modules[module] + + plugin_class = getattr(mod, "Plugin", None) + if plugin_class: + options = config.get_plugin_options(module) + plugin = plugin_class(options) + plugin.plugin_name = module + plugins.order.append(plugin) + plugins.names[module] = plugin + + return plugins + + def __iter__(self): + return iter(self.order) + + def get(self, module): + return self.names[module] diff --git a/coverage/plugin.py b/coverage/plugin.py index 7d67762a..a0a65e44 100644 --- a/coverage/plugin.py +++ b/coverage/plugin.py @@ -128,40 +128,3 @@ class FileReporter(object): """Support needed for files during the reporting phase.""" def __init__(self, filename): self.filename = filename - - -class Plugins(object): - """The currently loaded collection of coverage.py plugins.""" - - def __init__(self): - self.order = [] - self.names = {} - - @classmethod - def load_plugins(cls, modules, config): - """Load plugins from `modules`. - - Returns a list of loaded and configured plugins. - - """ - plugins = cls() - - for module in modules: - __import__(module) - mod = sys.modules[module] - - plugin_class = getattr(mod, "Plugin", None) - if plugin_class: - options = config.get_plugin_options(module) - plugin = plugin_class(options) - plugin.plugin_name = module - plugins.order.append(plugin) - plugins.names[module] = plugin - - return plugins - - def __iter__(self): - return iter(self.order) - - def get(self, module): - return self.names[module] diff --git a/tests/test_plugins.py b/tests/test_plugins.py index 6a1d1f7d..655053cc 100644 --- a/tests/test_plugins.py +++ b/tests/test_plugins.py @@ -1,11 +1,12 @@ """Tests for plugins.""" -import os, sys +import os +import sys from nose.plugins.skip import SkipTest import coverage -from coverage.plugin import Plugins +from coverage.control import Plugins import coverage.plugin @@ -221,6 +222,7 @@ if not C_TRACER: def snoop_on_callbacks(cov): cov_should_trace = cov._should_trace should_trace_filenames = set() + def snoop_should_trace(filename, frame): assert filename not in should_trace_filenames should_trace_filenames.add(filename) @@ -229,6 +231,7 @@ def snoop_on_callbacks(cov): cov_check_include = cov._check_include_omit_etc check_include_filenames = set() + def snoop_check_include_filenames(filename, frame): assert filename not in check_include_filenames check_include_filenames.add(filename) |