summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coverage/config.py58
-rw-r--r--test/test_config.py2
2 files changed, 24 insertions, 36 deletions
diff --git a/coverage/config.py b/coverage/config.py
index b560fb2a..34ed814d 100644
--- a/coverage/config.py
+++ b/coverage/config.py
@@ -69,25 +69,9 @@ class CoverageConfig(object):
if cp.has_option('run', 'timid'):
self.timid = cp.getboolean('run', 'timid')
if cp.has_option('run', 'omit'):
- # omit is a list of prefixes, on separate lines, or separated by
- # commas.
- omit_list = cp.get('run', 'omit')
- self.omit_prefixes = []
- for omit_line in omit_list.split('\n'):
- for omit in omit_line.split(','):
- omit = omit.strip()
- if omit:
- self.omit_prefixes.append(omit)
+ self.omit_prefixes = self.get_list(cp, 'run', 'omit')
if cp.has_option('run', 'include'):
- # include is a list of prefixes, on separate lines, or separated by
- # commas.
- include_list = cp.get('run', 'include')
- self.include_prefixes = []
- for include_line in include_list.split('\n'):
- for include in include_line.split(','):
- include = include.strip()
- if include:
- self.include_prefixes.append(include)
+ self.include_prefixes = self.get_list(cp, 'run', 'include')
# [report]
if cp.has_option('report', 'exclude_lines'):
@@ -97,25 +81,9 @@ class CoverageConfig(object):
if cp.has_option('report', 'ignore_errors'):
self.ignore_errors = cp.getboolean('report', 'ignore_errors')
if cp.has_option('report', 'omit'):
- # omit is a list of prefixes, on separate lines, or separated by
- # commas.
- omit_list = cp.get('report', 'omit')
- self.omit_prefixes = []
- for omit_line in omit_list.split('\n'):
- for omit in omit_line.split(','):
- omit = omit.strip()
- if omit:
- self.omit_prefixes.append(omit)
+ self.omit_prefixes = self.get_list(cp, 'report', 'omit')
if cp.has_option('report', 'include'):
- # include is a list of prefixes, on separate lines, or separated by
- # commas.
- include_list = cp.get('report', 'include')
- self.include_prefixes = []
- for include_line in include_list.split('\n'):
- for include in include_line.split(','):
- include = include.strip()
- if include:
- self.include_prefixes.append(include)
+ self.include_prefixes = self.get_list(cp, 'report', 'include')
# [html]
if cp.has_option('html', 'directory'):
@@ -124,3 +92,21 @@ class CoverageConfig(object):
# [xml]
if cp.has_option('xml', 'output'):
self.xml_output = cp.get('xml', 'output')
+
+ def get_list(self, cp, section, option):
+ """Read a list of strings from the ConfigParser `cp`.
+
+ The value of `section` and `option` is treated as a comma- and newline-
+ separated list of strings. Each value is stripped of whitespace.
+
+ Returns the list of strings.
+
+ """
+ value_list = cp.get(section, option)
+ values = []
+ for value_line in value_list.split('\n'):
+ for value in value_line.split(','):
+ value = value.strip()
+ if value:
+ values.append(value)
+ return values
diff --git a/test/test_config.py b/test/test_config.py
index f4bd65bf..d29ab3d7 100644
--- a/test/test_config.py
+++ b/test/test_config.py
@@ -102,6 +102,7 @@ class ConfigFileTest(CoverageTest):
branch = 1
cover_pylib = TRUE
parallel = on
+ include = a/ , b/
[report]
; these settings affect reporting.
@@ -136,6 +137,7 @@ class ConfigFileTest(CoverageTest):
["if 0:", "pragma:?\s+no cover", "another_tab"]
)
self.assertTrue(cov.config.ignore_errors)
+ self.assertEqual(cov.config.include_prefixes, ["a/", "b/"])
self.assertEqual(cov.config.omit_prefixes,
["one", "another", "some_more", "yet_more"]
)