summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt6
-rw-r--r--coverage/control.py17
-rw-r--r--test/test_api.py12
3 files changed, 30 insertions, 5 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index fa624a4e..6684e483 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -5,7 +5,11 @@ Change history for Coverage
Version 3.0b3
-------------
-Nothing yet.
+- Added parameters to coverage.__init__ for options that had been set on the
+ coverage object itself.
+
+- Added clear_exclude() and get_exclude_list() methods for programmatic
+ manipulation of the exclude regexes.
Version 3.0b2, 30 April 2009
diff --git a/coverage/control.py b/coverage/control.py
index 2d890cc6..d5f412ad 100644
--- a/coverage/control.py
+++ b/coverage/control.py
@@ -17,7 +17,8 @@ class coverage:
self.parallel_mode = parallel_mode
self.cover_stdlib = cover_stdlib
- self.exclude_re = ''
+ self.exclude_re = ""
+ self.exclude_list = []
self.file_locator = FileLocator()
self.sysprefix = self.file_locator.abs_file(sys.prefix)
@@ -78,6 +79,11 @@ class coverage:
self.collector.reset()
self.data.erase()
+ def clear_exclude(self):
+ """Clear the exclude list."""
+ self.exclude_list = []
+ self.exclude_re = ""
+
def exclude(self, regex):
"""Exclude source lines from execution consideration.
@@ -87,9 +93,12 @@ class coverage:
Matching any of the regexes excludes a source line.
"""
- if self.exclude_re:
- self.exclude_re += "|"
- self.exclude_re += "(" + regex + ")"
+ self.exclude_list.append(regex)
+ self.exclude_re = "(" + ")|(".join(self.exclude_list) + ")"
+
+ def get_exclude_list(self):
+ """Return the list of excluded regex patterns."""
+ return self.exclude_list
def save(self):
self._group_collected_data()
diff --git a/test/test_api.py b/test/test_api.py
index 47dc3d08..e4c5970b 100644
--- a/test/test_api.py
+++ b/test/test_api.py
@@ -174,3 +174,15 @@ class ApiTest(CoverageTest):
# and some were marked executed in colorsys.py
_, statements, missing, _ = cov2.analysis("colorsys.py")
self.assertNotEqual(statements, missing)
+
+ def testExcludeList(self):
+ cov = coverage.coverage()
+ cov.clear_exclude()
+ self.assertEqual(cov.get_exclude_list(), [])
+ cov.exclude("foo")
+ self.assertEqual(cov.get_exclude_list(), ["foo"])
+ cov.exclude("bar")
+ self.assertEqual(cov.get_exclude_list(), ["foo", "bar"])
+ self.assertEqual(cov.exclude_re, "(foo)|(bar)")
+ cov.clear_exclude()
+ self.assertEqual(cov.get_exclude_list(), [])