123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- // grunt-reporter.js
- //
- // A communication bridge between blanket.js and the grunt-blanket-qunit plugin
- // Distributed as part of the grunt-blanket-qunit library
- //
- // Copyright (C) 2013 Model N, Inc.
- // Distributed under the MIT License
- //
- // Documentation and full license available at:
- // https://github.com/ModelN/grunt-blanket-qunit
- //
- (function (){
- "use strict";
- // this is an ugly hack, but it's the official way of communicating between
- // the parent phantomjs and the inner grunt-contrib-qunit library...
- var sendMessage = function sendMessage() {
- var args = [].slice.call(arguments);
- alert(JSON.stringify(args));
- };
- // helper function for computing coverage info for a particular file
- var reportFile = function( data ) {
- var ret = {
- coverage: 0,
- hits: 0,
- misses: 0,
- sloc: 0
- };
- for (var i = 0; i < data.source.length; i++) {
- var line = data.source[i];
- var num = i + 1;
- if (data[num] === 0) {
- ret.misses++;
- ret.sloc++;
- } else if (data[num] !== undefined) {
- ret.hits++;
- ret.sloc++;
- }
- }
- ret.coverage = ret.hits / ret.sloc * 100;
- return [ret.hits,ret.sloc];
- };
- // this function is invoked by blanket.js when the coverage data is ready. it will
- // compute per-file coverage info, and send a message to the parent phantomjs process
- // for each file, which the grunt task will use to report passes & failures.
- var reporter = function(cov){
- cov = window._$blanket;
- var sortedFileNames = [];
- var totals =[];
- for (var filename in cov) {
- if (cov.hasOwnProperty(filename)) {
- sortedFileNames.push(filename);
- }
- }
- sortedFileNames.sort();
- for (var i = 0; i < sortedFileNames.length; i++) {
- var thisFile = sortedFileNames[i];
- var data = cov[thisFile];
- var thisTotal= reportFile( data );
- sendMessage("blanket:fileDone", thisTotal, thisFile);
- }
- sendMessage("blanket:done");
- };
- blanket.customReporter = reporter;
- })();
|