summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coverage/control.py39
-rw-r--r--coverage/plugin.py37
-rw-r--r--tests/test_plugins.py7
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)