coco
Code coverage CLI + library for Nim using LCOV
Summary
| Latest Version | Unknown |
|---|---|
| License | MIT |
| CI Status | Passing |
| Downloads | 0 |
| Last Indexed | 2026-07-21 05:24 |
Tags
Installation
nimble install coco
choosenim install coco
git clone https://github.com/samuelroy/coco
OS Compatibility
| Platform | Linux | macOS | Windows | FreeBSD | OpenBSD | NetBSD | Android | iOS | WASM | Embedded |
|---|---|---|---|---|---|---|---|---|---|---|
| coco | ✓ | ✓ | ✓ | - | - | - | - | - | - | - |
Source
| Repository | https://github.com/samuelroy/coco |
|---|---|
| Homepage | https://github.com/samuelroy/coco |
| Documentation | View Documentation |
| Registry Source | nimble_official |
README

Code coverage for Nim using LCOV.
Features
- Line & Branch coverage support
- Forwards nim compiler options
- Works out-of-the box with Nim unittests
- API + CLI
- HTML report
Installation & usage
Install using Nimble:
nimble install coco
CLI
Generate a code coverage report:
coco --target "tests/**/*.nim" --cov '!tests' --compiler="--hints:off"
The flag --target tells Coco to run and compile nim files in the tests/ directory (and subdirectories if any).
The flag --cov is helpful for extracting or removing data from the file *.info. Here we don't want code coverage for our tests, only for our main library coco.
The flag --compiler forwards its value directly to the Nim compiler.
To get the full list of available flags, type in your shell coco -h
By default, Coco will generate a lcov.info file on your project root folder and create a report under coverage/.
To check your report, open the file coverage/index.htmlin your browser:

VScode visualization
Install Coverage Gutters.
This nice plugin will map your coverage to your source code right into VScode:

Library
import and use:
import coco
discard coverage(target = "tests/foo.nim", branch = true)
You can find the full documentation here: API Coco
Tests
This task has only been tested under MacOSX. Feel free to open a pull request to share your experiments to code coverage Nim projects.
TODO
- [x] Support for subdirectories in tests/
- [ ] Coveralls.io integration