https://github.com/yglukhov/coverage
Code coverage library for Nim
https://github.com/yglukhov/coverage
Last synced: 7 months ago
JSON representation
Code coverage library for Nim
- Host: GitHub
- URL: https://github.com/yglukhov/coverage
- Owner: yglukhov
- License: mit
- Created: 2015-10-21T10:59:45.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2021-07-21T15:46:09.000Z (about 4 years ago)
- Last Synced: 2025-01-24T22:27:16.417Z (9 months ago)
- Language: Nim
- Size: 21.5 KB
- Stars: 37
- Watchers: 6
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# coverage [](https://travis-ci.org/yglukhov/coverage) [](https://coveralls.io/github/yglukhov/coverage?branch=master)
Code coverage library for Nim. Inspired by [Andreas Rumpf talk at OSCON](https://github.com/Araq/oscon2015).## Usage
```nim
import coverage
import tablesproc myProcToCover(x: int) {.cov.} = # Add cov pragma to proc definition to enable code coverage.
if x == 0:
echo "x is 0"
else:
echo "x is ", x# Run your program or unittest
myProcToCover(1)# At the end of the program, display coverage results:
echo "BY FILE: "
for fname, perc in coveragePercentageByFile():
echo fname, " ", perc
# Outputs: BY FILE: {test.nim: 0.5}echo "TOTAL: ", totalCoverage()
# Outputs: TOTAL: 0.5# Finer grained information may be accessed with coverageInfoByFile proc.
```### Adding coverage to a unittest file
```nim
import coverage, tables, unittest# Import your code and run the tests as usual
# suite "test": ...echo "Coverage by file: "
for fname, num in coveragePercentageByFile().pairs():
echo fname, " ", numecho "Total coverage: ", totalCoverage()
```Add "import coverage" and the top of your sources and add "{.cov.}" to every proc.
### Generating a report
```bash
export NIM_COVERAGE_DIR=coverage_results
mkdir -p "$NIM_COVERAGE_DIR"nim c -r your_tests.nim
nimcoverage genreport
```### Notes
- Code coverage is disabled if ```release``` is defined. Define ```enableCodeCoverage``` option to keep it enabled in release mode.# Travic CI + Coveralls integration
If you're using [Travis CI](https://travis-ci.org) and [Coveralls](https://coveralls.io), you can upload coverage results right at the end of your program:
```nim
sendCoverageResultsToCoveralls()
```