diff options
-rw-r--r-- | CHANGES.txt | 6 | ||||
-rw-r--r-- | coverage/control.py | 17 | ||||
-rw-r--r-- | test/test_api.py | 12 |
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(), []) |