An example of how the nodeunit lcov reporter can be used to send coverage data to coveralls
Example showing how to use the new nodeunit lcov reporter to publish coverage data to Coveralls from Travis.
Our example code is the quicksort algorithm.
Depend on nodeunit, jscoverage and coveralls:
npm install nodeunit jscoverage coveralls --save-dev
Next, add a coveralls script to "scripts"
"scripts": {
"test": "nodeunit test",
"coveralls": "jscoverage lib && QUICKSORT_COV=1 nodeunit --reporter=lcov test | coveralls"
}
By creating our own custom NPM script, we can still use the npm test
command without having to instrument and send data to coveralls.
The "coveralls" script does a few things:
lib
directory. By default jscoverage will output instrumented files to lib-cov
.QUICKSORT_COV
to signal to the application it should use code that has been instrumented by jscoverage.test
, using the lcov reporter to output the coverage report to stdout.You can run the coveralls script via npm run coveralls
Above we hinted that by defining an environment variable called QUICKSORT_COV
our tests would use instrumented code. Our index.js
looks like:
module.exports = process.env.QUICKSORT_COV
? require('./lib-cov/quicksort')
: require('./lib/quicksort')
When nodeunit runs test/quicksort.js
, it requires the quicksort index.js
file:
var quickSort = require('../');
To submit to coveralls you'll either need to add a .coveralls.yml
file with your repo secret key to your project root (which you shouldn't commit to github!) or submit your coverage via Travis. If you're using a .coveralls.yml
file you can simply run npm run coveralls
and your code coverage will appear (assuming you first enabled the repository on the coveralls website). If you're using Travis, you need to add a .travis.yml
file that runs your tests and submits the report:
language: node_js
node_js:
- "0.10"
after_script:
- npm run coveralls