kopia lustrzana https://github.com/c9/core
136 wiersze
4.4 KiB
JavaScript
136 wiersze
4.4 KiB
JavaScript
// TODO docs, see data/breakpoint.js
|
|
define(function(require, exports, module) {
|
|
|
|
var Data = require("./data");
|
|
|
|
function Coverage(options) {
|
|
this.data = options || {};
|
|
this.type = "coverage";
|
|
}
|
|
|
|
Coverage.prototype = new Data(
|
|
["path"],
|
|
["files"]
|
|
);
|
|
|
|
Coverage.prototype.equals = function(coverage) {
|
|
return this.data.path == coverage.path;
|
|
};
|
|
|
|
module.exports = Coverage;
|
|
|
|
/*
|
|
Copyright (c) 2012, Yahoo! Inc. All rights reserved.
|
|
Code licensed under the BSD License:
|
|
http://yuilibrary.com/license/
|
|
*/
|
|
Coverage.fromLCOV = function(lcovString, path) {
|
|
var data = [], item;
|
|
|
|
[ 'end_of_record' ].concat(lcovString.split('\n')).forEach(function(line) {
|
|
line = line.trim();
|
|
var allparts = line.split(':'),
|
|
parts = [allparts.shift(), allparts.join(':')],
|
|
lines, fn;
|
|
|
|
switch (parts[0].toUpperCase()) {
|
|
case 'TN':
|
|
// item.title = parts[1].trim();
|
|
break;
|
|
case 'SF':
|
|
item.file = parts.slice(1).join(':').trim().replace(/\\/g, "/");
|
|
break;
|
|
case 'FNF':
|
|
// item.functions.found = Number(parts[1].trim());
|
|
break;
|
|
case 'FNH':
|
|
// item.functions.hit = Number(parts[1].trim());
|
|
break;
|
|
case 'LF':
|
|
item.lines.found = Number(parts[1].trim());
|
|
break;
|
|
case 'LH':
|
|
item.lines.hit = Number(parts[1].trim());
|
|
break;
|
|
case 'DA':
|
|
lines = parts[1].split(',');
|
|
|
|
if (Number(lines[1]))
|
|
item.lines.covered.push(Number(lines[0]));
|
|
else
|
|
item.lines.uncovered.push(Number(lines[0]));
|
|
|
|
// item.lines.details.push({
|
|
// line: Number(lines[0]),
|
|
// hit: Number(lines[1])
|
|
// });
|
|
break;
|
|
case 'FN':
|
|
// fn = parts[1].split(',');
|
|
// item.functions.details.push({
|
|
// name: fn[1],
|
|
// line: Number(fn[0])
|
|
// });
|
|
break;
|
|
case 'FNDA':
|
|
// fn = parts[1].split(',');
|
|
// item.functions.details.some(function(i, k) {
|
|
// if (i.name === fn[1] && i.hit === undefined) {
|
|
// item.functions.details[k].hit = Number(fn[0]);
|
|
// return true;
|
|
// }
|
|
// });
|
|
break;
|
|
case 'BRDA':
|
|
// fn = parts[1].split(',');
|
|
// item.branches.details.push({
|
|
// line: Number(fn[0]),
|
|
// block: Number(fn[1]),
|
|
// branch: Number(fn[2]),
|
|
// taken: ((fn[3] === '-') ? 0 : Number(fn[3]))
|
|
// });
|
|
break;
|
|
case 'BRF':
|
|
// item.branches.found = Number(parts[1]);
|
|
break;
|
|
case 'BRH':
|
|
// item.branches.hit = Number(parts[1]);
|
|
break;
|
|
}
|
|
|
|
if (line.indexOf('end_of_record') > -1) {
|
|
data.push(item);
|
|
item = {
|
|
lines: {
|
|
found: 0,
|
|
hit: 0,
|
|
covered: [],
|
|
uncovered: []
|
|
}
|
|
// functions: {
|
|
// hit: 0,
|
|
// found: 0,
|
|
// details: []
|
|
// },
|
|
// branches: {
|
|
// hit: 0,
|
|
// found: 0,
|
|
// details: []
|
|
// }
|
|
};
|
|
}
|
|
});
|
|
|
|
data.shift();
|
|
|
|
if (data.length) {
|
|
return new Coverage({
|
|
files: data,
|
|
path: path
|
|
});
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
};
|
|
}); |