diff options
author | Zooko Ofsimplegeo <zooko@simplegeo.com> | 2010-04-19 16:08:37 -0600 |
---|---|---|
committer | Zooko Ofsimplegeo <zooko@simplegeo.com> | 2010-04-19 16:08:37 -0600 |
commit | ce4dbf3b92dcccf146cdf8c0bfb2f6da0a7c5dd5 (patch) | |
tree | c1841e353e5968604551161e2afbd4ebad38fe75 /coverage/codeunit.py | |
parent | 6638c632a10af6477a712f1a86af6d9e9ab3a3e3 (diff) | |
download | python-coveragepy-git-ce4dbf3b92dcccf146cdf8c0bfb2f6da0a7c5dd5.tar.gz |
add a --require option to specify directories which are required to be at the beginning of the path for any file that is going to be included in code coverage
make the --omit and --require options apply to code coverage generation as well as to reporting; This speeds up tests from 6 seconds to 1 second on my system, as well as making the resulting .coverage db include *only* the code that I care about, which helps with my code coverage progression/regression tool.
--HG--
extra : transplant_source : %1F.4%81%E8%DA%0B%D0%D5%9D%89%DE%E1vY%E6%CD%1A%EB%C9
Diffstat (limited to 'coverage/codeunit.py')
-rw-r--r-- | coverage/codeunit.py | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/coverage/codeunit.py b/coverage/codeunit.py index 9bf6dc97..51640b80 100644 --- a/coverage/codeunit.py +++ b/coverage/codeunit.py @@ -6,13 +6,16 @@ from coverage.backward import string_class, StringIO from coverage.misc import CoverageException -def code_unit_factory(morfs, file_locator, omit_prefixes=None): +def code_unit_factory(morfs, file_locator, omit_prefixes=None, require_prefixes=None): """Construct a list of CodeUnits from polymorphic inputs. `morfs` is a module or a filename, or a list of same. `file_locator` is a FileLocator that can help resolve filenames. `omit_prefixes` is a list of prefixes. CodeUnits that match those prefixes will be omitted from the list. + `require_prefixes` is a list of prefixes. Only CodeUnits that match those prefixes + will be included in the list. + You are required to pass at most one of `omit_prefixes` and `require_prefixes`. Returns a list of CodeUnit objects. @@ -33,7 +36,18 @@ def code_unit_factory(morfs, file_locator, omit_prefixes=None): code_units = [CodeUnit(morf, file_locator) for morf in morfs] - if omit_prefixes: + if require_prefixes: + assert not isinstance(require_prefixes, string_class) # common mistake + prefixes = [file_locator.abs_file(p) for p in require_prefixes] + filtered = [] + for cu in code_units: + for prefix in prefixes: + if cu.filename.startswith(prefix): + filtered.append(cu) + break + + code_units = filtered + elif omit_prefixes: assert not isinstance(omit_prefixes, string_class) # common mistake prefixes = [file_locator.abs_file(p) for p in omit_prefixes] filtered = [] |