Skip to content

gaborbernat/covdefaults

 
 

Repository files navigation

Build Status Azure DevOps coverage

covdefaults

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 =
    */.tox/*
    */__main__.py
    */setup.py
    */venv*/*

[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
    ^if (False|TYPE_CHECKING):
    : \.\.\.$
    ^ +\.\.\.$
    -> ['"]?NoReturn['"]?:

    # non-runnable code
    if __name__ == ['"]__main__['"]:$

    # additional platform related pragmas (see below)

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 cover

or

# pragma: TAG cover

these tags will be generated by the following values:

  • os.name
    • nt (windows)
    • posix (linux, macOs, cygwin, etc.)
  • sys.platform
    • cygwin
    • darwin (macOs)
    • linux
    • msys
    • win32
  • sys.implementation.name
    • cpython
    • pypy

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.

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 = */.tox/*

this will result in */.tox/* not being omitted (*/.tox/* is among the defaults provided by covdefaults).

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

About

A coverage plugin to provide sensible default settings

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%