blanket
Version:
seamless js code coverage
79 lines (62 loc) • 2.21 kB
JavaScript
(function() {
if(!mocha) {
throw new Exception("mocha library does not exist in global namespace!");
}
/*
* Mocha Events:
*
* - `start` execution started
* - `end` execution complete
* - `suite` (suite) test suite execution started
* - `suite end` (suite) all tests (and sub-suites) have finished
* - `test` (test) test execution started
* - `test end` (test) test completed
* - `hook` (hook) hook execution started
* - `hook end` (hook) hook complete
* - `pass` (test) test passed
* - `fail` (test, err) test failed
*
*/
var OriginalReporter = mocha._reporter;
var BlanketReporter = function(runner) {
runner.on('start', function() {
blanket.setupCoverage();
});
runner.on('end', function() {
blanket.onTestsDone();
});
runner.on('suite', function() {
blanket.onModuleStart();
});
runner.on('test', function() {
blanket.onTestStart();
});
runner.on('test end', function(test) {
blanket.onTestDone(test.parent.tests.length, test.state === 'passed');
});
runner.on('hook', function(){
blanket.onTestStart();
});
runner.on('hook end', function(){
blanket.onTestsDone();
});
// NOTE: this is an instance of BlanketReporter
new OriginalReporter(runner);
};
BlanketReporter.prototype = OriginalReporter.prototype;
mocha.reporter(BlanketReporter);
var oldRun = mocha.run,
oldCallback = null;
mocha.run = function (finishCallback) {
oldCallback = finishCallback;
console.log("waiting for blanket...");
};
blanket.beforeStartTestRunner({
callback: function(){
if (!blanket.options("existingRequireJS")){
oldRun(oldCallback);
}
mocha.run = oldRun;
}
});
})();