Generates code coverage information for Vim scripts.
It parses the output from Vim's
:profile command, and generates data
compatible with Coverage.py.
You can install covimerage using pip:
pip install covimerage
You can use
covimerage run to wrap the call to Neovim/Vim with necessary
covimerage run vim -Nu test/vimrc -c 'Vader! test/**'
This will write the file
.coverage_covimerage by default (use
to configure it), which is compatible with Coverage.py.
A report is automatically generated (on stdout).
You can then call
covimerage xml to create a
(Cobertura-compatible), which tools like Codecov's
codecov tool can consume, e.g. via
codecov -f coverage.xml.
1. Generate profile information for your Vim script(s)
You have to basically add the following to your tests vimrc:
profile start /tmp/vim-profile.txt profile! file ./*
This makes Neovim/Vim then write a file with profiling information.
2. Call covimerage on the output file(s)
covimerage write_coverage /tmp/vim-profile.txt
This will create a file
.coverage_covimerage (the default for
with entries marked for processing by a
Coverage.py plugin (provided by
3. Include the covimerage plugin in .coveragerc
coverage on the generated output (data file), you need to add
covimerage plugin to the
.coveragerc file (which Coverage.py uses).
This is basically all the
.coveragerc you will need, but you could use
other settings here (for Coverage.py), e.g. to omit some files:
[run] plugins = covimerage data_file = .coverage_covimerage
4. Create the report(s)
Neomake is the first adopter of this. It has an advanced test setup (including Docker based builds), and looking at tis setup could be helpful when setting up covimerage for your plugin/project.
- Discussion in Coverage.py's issue tracker: coverage issue 607
- Line hit counts: known to covimerage, but not supported by Coverage.py (https://bitbucket.org/ned/coveragepy/issues/607/#comment-40048034).