No description
Find a file
2019-12-18 07:10:36 +02:00
tests Don't split path name. Fixes #8 (#9) 2019-12-17 23:34:48 +02:00
.gitignore Initial commit 2015-10-21 13:59:45 +03:00
.travis.yml Use docker for autobuild 2017-01-15 02:26:11 +02:00
cibuild.sh Use docker for autobuild 2017-01-15 02:37:16 +02:00
coverage.nim Fix style issues (#10) 2019-12-18 07:10:36 +02:00
coverage.nimble fixes 2018-11-18 19:24:55 +02:00
coverageTemplate.html Coverage report generation 2015-12-11 21:09:18 +02:00
LICENSE Initial commit 2015-10-21 13:59:45 +03:00
nimcoverage.nim Coverage report generation 2015-12-11 21:09:18 +02:00
README.md Add examples and report generation. 2017-01-27 20:26:04 +00:00

coverage Build Status Coverage Status

Code coverage library for Nim. Inspired by Andreas Rumpf talk at OSCON.

Usage

import coverage
import tables

proc 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

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, " ", num

echo "Total coverage: ", totalCoverage()

Add "import coverage" and the top of your sources and add "{.cov.}" to every proc.

Generating a report

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 and Coveralls, you can upload coverage results right at the end of your program:

sendCoverageResultsToCoveralls()