83 lines
1.7 KiB
Markdown
83 lines
1.7 KiB
Markdown
bunker
|
|
======
|
|
|
|
Bunker is a module to calculate code coverage using native javascript
|
|
[burrito](https://github.com/substack/node-burrito) AST trickery.
|
|
|
|
[![build status](https://secure.travis-ci.org/substack/node-bunker.png)](http://travis-ci.org/substack/node-bunker)
|
|
|
|
![code coverage](http://substack.net/images/code_coverage.png)
|
|
|
|
examples
|
|
========
|
|
|
|
tiny
|
|
----
|
|
|
|
````javascript
|
|
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++
|
|
|
|
methods
|
|
=======
|
|
|
|
var bunker = require('bunker');
|
|
|
|
var b = bunker(src)
|
|
-------------------
|
|
|
|
Create a new bunker code coverageifier with some source `src`.
|
|
|
|
The bunker object `b` is an `EventEmitter` that emits `'node'` events with two
|
|
parameters:
|
|
|
|
* `node` - the [burrito](https://github.com/substack/node-burrito) node object
|
|
* `stack` - the stack, [stackedy](https://github.com/substack/node-stackedy) style
|
|
|
|
b.include(src)
|
|
--------------
|
|
|
|
Include some source into the bunker.
|
|
|
|
b.compile()
|
|
-----------
|
|
|
|
Return the source wrapped with burrito.
|
|
|
|
b.assign(context={})
|
|
--------------------
|
|
|
|
Assign the statement-tracking functions into `context`.
|
|
|
|
b.run(context={})
|
|
-----------------
|
|
|
|
Run the source using `vm.runInNewContext()` with some `context`.
|
|
The statement-tracking functions will be added to `context` by `assign()`.
|