Bunker is a module to calculate code coverage using native javascript burrito AST trickery.
var bunker = require('bunker');
var b = bunker('var x = 0; for (var i = 0; i < 30; i++) { x++ }');
var counts = {};
b.on('node', function (node) {
if (!counts[node.id]) {
counts[node.id] = { times : 0, node : node };
}
counts[node.id].times ++;
});
b.run();
Object.keys(counts).forEach(function (key) {
var count = counts[key];
console.log(count.times + ' : ' + count.node.source());
});
output:
$ node example/tiny.js
1 : var x=0;
31 : i<30
30 : i++
30 : x++;
30 : x++
var bunker = require('bunker');
Create a new bunker code coverageifier with some source src
.
The bunker object b
is an EventEmitter
that emits 'node'
events with two
parameters:
Include some source into the bunker.
Return the source wrapped with burrito.
Run the source using vm.runInNewContext()
with some context
.