forked from enviPath/enviPy
Current Dev State
This commit is contained in:
145
static/js/ketcher2/node_modules/coveralls/lib/convertLcovToCoveralls.js
generated
vendored
Normal file
145
static/js/ketcher2/node_modules/coveralls/lib/convertLcovToCoveralls.js
generated
vendored
Normal file
@ -0,0 +1,145 @@
|
||||
var TRAVIS_JOB_ID = process.env.TRAVIS_JOB_ID || 'unknown';
|
||||
var fs = require('fs');
|
||||
var lcovParse = require('lcov-parse');
|
||||
var path = require('path');
|
||||
var logger = require('./logger')();
|
||||
|
||||
var detailsToCoverage = function(length, details){
|
||||
var coverage = new Array(length);
|
||||
details.forEach(function(obj){
|
||||
coverage[obj.line - 1] = obj.hit;
|
||||
});
|
||||
return coverage;
|
||||
};
|
||||
|
||||
var detailsToBranches = function(details){
|
||||
var branches = [];
|
||||
details.forEach(function(obj){
|
||||
['line','block','branch','taken'].forEach(function(key){
|
||||
branches.push(obj[key] || 0);
|
||||
});
|
||||
});
|
||||
return branches;
|
||||
};
|
||||
|
||||
var convertLcovFileObject = function(file, filepath){
|
||||
var rootpath = filepath;
|
||||
filepath = path.resolve(rootpath, file.file);
|
||||
var source = fs.readFileSync(filepath, 'utf8');
|
||||
var lines = source.split("\n");
|
||||
var coverage = detailsToCoverage(lines.length, file.lines.details);
|
||||
var branches = detailsToBranches(file.branches.details);
|
||||
return { name : path.relative(rootpath, path.resolve(rootpath, file.file)).split( path.sep ).join( "/" ),
|
||||
source : source,
|
||||
coverage : coverage,
|
||||
branches : branches };
|
||||
};
|
||||
|
||||
var cleanFilePath = function(file) {
|
||||
if (file.indexOf('!') > -1) {
|
||||
var regex = /^(.*!)(.*)$/g;
|
||||
var matches = regex.exec(file);
|
||||
return matches[matches.length-1];
|
||||
}
|
||||
|
||||
return file;
|
||||
};
|
||||
|
||||
var convertLcovToCoveralls = function(input, options, cb){
|
||||
var filepath = options.filepath || '';
|
||||
logger.debug("in: ", filepath);
|
||||
filepath = path.resolve(process.cwd(), filepath);
|
||||
lcovParse(input, function(err, parsed){
|
||||
if (err){
|
||||
logger.error("error from lcovParse: ", err);
|
||||
logger.error("input: ", input);
|
||||
return cb(err);
|
||||
}
|
||||
var postJson = {
|
||||
source_files : []
|
||||
};
|
||||
if (options.git){
|
||||
postJson.git = options.git;
|
||||
}
|
||||
if (options.run_at){
|
||||
postJson.run_at = options.run_at;
|
||||
}
|
||||
if (options.service_name){
|
||||
postJson.service_name = options.service_name;
|
||||
}
|
||||
if (options.service_job_id){
|
||||
postJson.service_job_id = options.service_job_id;
|
||||
}
|
||||
if (options.service_pull_request) {
|
||||
postJson.service_pull_request = options.service_pull_request;
|
||||
}
|
||||
if (options.repo_token) {
|
||||
postJson.repo_token = options.repo_token;
|
||||
}
|
||||
if (options.parallel) {
|
||||
postJson.parallel = options.parallel;
|
||||
}
|
||||
if (options.service_pull_request) {
|
||||
postJson.service_pull_request = options.service_pull_request;
|
||||
}
|
||||
parsed.forEach(function(file){
|
||||
file.file = cleanFilePath(file.file);
|
||||
var currentFilePath = path.resolve(filepath, file.file);
|
||||
if (fs.existsSync(currentFilePath)) {
|
||||
postJson.source_files.push(convertLcovFileObject(file, filepath));
|
||||
}
|
||||
});
|
||||
return cb(null, postJson);
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = convertLcovToCoveralls;
|
||||
|
||||
/* example coveralls json file
|
||||
|
||||
|
||||
{
|
||||
"service_job_id": "1234567890",
|
||||
"service_name": "travis-ci",
|
||||
"source_files": [
|
||||
{
|
||||
"name": "example.rb",
|
||||
"source": "def four\n 4\nend",
|
||||
"coverage": [null, 1, null]
|
||||
},
|
||||
{
|
||||
"name": "two.rb",
|
||||
"source": "def seven\n eight\n nine\nend",
|
||||
"coverage": [null, 1, 0, null]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
example output from lcov parser:
|
||||
|
||||
[
|
||||
{
|
||||
"file": "index.js",
|
||||
"lines": {
|
||||
"found": 0,
|
||||
"hit": 0,
|
||||
"details": [
|
||||
{
|
||||
"line": 1,
|
||||
"hit": 1
|
||||
},
|
||||
{
|
||||
"line": 2,
|
||||
"hit": 1
|
||||
},
|
||||
{
|
||||
"line": 3,
|
||||
"hit": 1
|
||||
},
|
||||
{
|
||||
"line": 5,
|
||||
"hit": 1
|
||||
},
|
||||
|
||||
*/
|
||||
Reference in New Issue
Block a user