A coverage plugin to provide sensible default settings
installation
pip install covdefaults
usage
to enable the plugin, add covdefaults to your coverage plugins
in .coveragerc:
[run] plugins = covdefaults
in setup.cfg / tox.ini:
[coverage:run] plugins = covdefaults
in pyproject.toml:
[tool.coverage.run] plugins = ["covdefaults"]
default settings
[coverage:run]
branch = True source = . omit = */__main__.py */setup.py
[coverage:report]
show_missing = True skip_covered = True fail_under = 100 exclude_lines = # a more strict default pragma \# pragma: no cover\b # allow defensive code ^\s*raise AssertionError\b ^\s*raise NotImplementedError\b ^\s*return NotImplemented\b ^\s*raise$ # typing-related code ^\s*if (False|TYPE_CHECKING): : \.\.\.(\s*#.*)?$ ^ +\.\.\.$ -> ['"]?NoReturn['"]?: # non-runnable code if __name__ == ['"]__main__['"]:$ # additional platform related pragmas (see below) # additional version related pragmas (see below) partial_branches = # a more strict default pragma \# pragma: no cover\b # our platform pragmas \# pragma: (nt|posix|cygwin|darwin|linux|msys|win32|cpython|pypy) (no )?cover\b # our version pragmas \# pragma: (>=?|<=?|==|!=)\d+\.\d+ cover\b
platform specific # pragma: no cover
several # pragma: no cover tags will be added automatically based on the
platform and implementation.
these will be in the form of:
# pragma: TAG no coveror
# pragma: TAG coverthese tags will be generated by the following values:
os.nament(windows)posix(linux, macOs, cygwin, etc.)
sys.platformcygwindarwin(macOs)linuxmsyswin32
sys.implementation.namecpythonpypy
for every tag which does not match, you can use negation. here's an example:
if sys.platform == 'win32': # pragma: win32 cover bin_dir = 'Scripts' else: # pragma: win32 no cover bin_dir = 'bin'
note here that # pragma: win32 cover will become a "no cover" for everything
which is not win32 -- whereas the # pragma: win32 no cover will be a
"no cover" only on win32.
version specific # pragma: no cover
several # pragma: no cover tags will be added automatically based on the
platform and implementation.
these will be in the form of:
# pragma: >=#.# coverwhere the comparison operator is one of >, >=, <, <=, ==, !=
for example:
if sys.version_info >= (3, 9): # pragma: >=3.9 cover print('3.9+') else: # pragma: <3.9 cover print('old')
overriding options
several of the options can be overridden / extended in your coverage
configuration. the examples below assume .coveragerc however any of the
files coverage supports work as well.
run:omit
[run] omit = pre_commit/resources/*
this will result in the pre_commit/resources/* being omitted in addition
to the defaults provided by covdefaults.
[covdefaults] subtract_omit = */__main__.py
this will result in */__main__.py not being omitted (*/__main__.py is
among the defaults provided by covdefaults).
run:source
[run] source = $PWD
covdefaults will not override this value to . if it is set manually.
report:exclude_lines
[report] exclude_lines = ^if MYPY:$
this will result in lines matching ^if MYPY:$ to additionally be excluded
from coverage in addition to the defaults provided by covdefaults.
report:fail_under
[report] fail_under = 90
covdefaults will not change the value if you provide one for fail_under