/emacs-python-coverage

show python coverage information directly in emacs

Primary LanguageEmacs LispBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

python-coverage.el

This is an experimental Emacs package to report code coverage output produced by Python's coverage package directly inside Emacs buffers.

coverage's xml output follows the cobertura format, it should work with similar reports from other tools, like C/C++ with gcovr.

Best used together with python-pytest.el.

Screenshot

mandatory screenshot

Overlays

Minor mode for automagically updated overlays:

  • python-coverage-overlay-mode

Alternatively, commands for manually updated overlays:

  • python-coverage-overlay-refresh
  • python-coverage-overlay-remove-all

Navigation commands:

  • python-coverage-overlay-jump-next
  • python-coverage-overlay-jump-previous
  • python-coverage-overlay-jump-first

Flycheck checker

Run flycheck-select-checker, pick python-coverage.

Coverage data

This package reads the XML output produced by Python's coverage package. Usually this file is named coverage.xml.

With plain `coverage`:

$ coverage xml

With pytest-cov, pass --cov-report=xml, e.g. via pyproject.toml:

[tool.pytest.ini_options]
addopts = [
  "--cov=your-package",
  "--cov=test",
  "--cov-report=xml",
]

Customization

Command for manual coverage file selection:

  • python-coverage-select-coverage-file

Customizable settings (see their description for details) in the python-coverage group, e.g. via M-x customize-group:

  • python-coverage-default-file-name
  • python-coverage-overlay-width

Styling via custom faces, e.g. via M-x customize-face:

  • python-coverage-overlay-missing
  • python-coverage-overlay-partial
  • python-coverage-overlay-missing-outdated
  • python-coverage-overlay-partial-outdated

Note: by default this package inherits from magit-diff-* faces, which should work in most themes. This requires magit to be installed, but it's not otherwise used.

Credits

This package was created by wouter bolsterlee (@wbolster).

License

BSD; see LICENSE.rst.