Skip to content
This repository was archived by the owner on Feb 19, 2020. It is now read-only.

Commit a259091

Browse files
committed
Merge branch 'master' into fix-by-zero-division
2 parents 17aa67b + a6e9ffe commit a259091

20 files changed

+332
-182
lines changed

.jscsrc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
"disallowSpacesInFunctionDeclaration": {
4040
"beforeOpeningRoundBrace": true
4141
},
42-
"requireMultipleVarDecl": true,
4342
"requireBlocksOnNewline": 1,
4443
"disallowEmptyBlocks": true,
4544
"disallowSpacesInsideArrayBrackets": true,

.jshintrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"strict": true,
1717
"eqnull": true,
1818
"node": true,
19+
"mocha": true,
1920
"predef": [
2021
"describe",
2122
"it",

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ sudo: false
33
node_js:
44
- '0.10'
55
- '0.11'
6+
- '0.12'
67
matrix:
78
fast_finish: true
89
script: npm test

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && c
6363
istanbul cover jasmine-node --captureExceptions spec/ && cat ./coverage/lcov.info | ./node_modules/codacy-coverage/bin/codacy-coverage.js && rm -rf ./coverage
6464
```
6565

66+
### [Grunt](http://gruntjs.com/)
67+
- Install & Configure [grunt-codacy](https://www.npmjs.com/package/grunt-codacy)
68+
6669
### [Poncho](https://github.com/deepsweet/poncho)
6770
Client-side JS code coverage using [PhantomJS](https://github.com/ariya/phantomjs), [Mocha](https://github.com/visionmedia/mocha) and [Blanket](https://github.com/alex-seville/blanket):
6871
- [Configure](http://visionmedia.github.io/mocha/#browser-support) Mocha for browser

bin/codacy-coverage.js

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#!/usr/bin/env node
2-
(function (program, logger, util, lib, getGitData, Q) {
2+
(function (program, logger, util, lib) {
33
'use strict';
44
process.stdin.resume();
55
process.stdin.setEncoding('utf8');
66

7-
var input = '',
8-
loggerImpl;
7+
var input = '';
8+
var loggerImpl;
99

1010
process.stdin.on('data', function (chunk) {
1111
input += chunk;
@@ -15,7 +15,7 @@
1515
});
1616

1717
program
18-
.version('1.0.4')
18+
.version(require('../package').version)
1919
.usage('[options]')
2020
.option('-f, --format [value]', 'Coverage input format')
2121
.option('-t, --token [value]', 'Codacy Project API Token')
@@ -41,30 +41,12 @@
4141
return;
4242
}
4343

44-
var token = program.token || process.env.CODACY_REPO_TOKEN,
45-
commitId = program.commit,
46-
format = program.format || 'lcov',
47-
pathPrefix = program.prefix || '';
48-
49-
if (!token) {
50-
return loggerImpl.error(new Error('Token is required'));
51-
}
52-
53-
// Parse the coverage data for the given format and retrieve the commit id if we don't have it.
54-
return Q.all([lib.getParser(format).parse(pathPrefix, input), getGitData.getCommitId(commitId)]).spread(function (parsedCoverage, commitId) {
55-
// Now that we've parse the coverage data to the correct format, send it to Codacy.
56-
loggerImpl.trace(parsedCoverage);
57-
lib.reporter({
58-
endpoint: program.endpoint
59-
}).sendCoverage(token, commitId, parsedCoverage).then(function () {
60-
loggerImpl.debug('Successfully sent coverage');
61-
}, function (err) {
62-
loggerImpl.error('Error sending coverage');
63-
loggerImpl.error(err);
64-
});
44+
return lib.handleInput(input, program).then(function () {
45+
loggerImpl.debug('Successfully sent coverage');
6546
}, function (err) {
47+
loggerImpl.error('Error sending coverage');
6648
loggerImpl.error(err);
6749
});
6850
});
6951

70-
}(require('commander'), require('../lib/logger'), require('util'), require('../index'), require('../lib/getGitData'), require('q')));
52+
}(require('commander'), require('../lib/logger'), require('util'), require('../index')));

index.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
(function (parser, reporter, getGitData) {
1+
(function (parser, reporter, getGitData, handleInput) {
22
'use strict';
33
module.exports = {
44
getParser: parser.getParser,
55
reporter: reporter,
6-
getGitData: getGitData
6+
getGitData: getGitData,
7+
handleInput: handleInput
78
};
8-
}(require('./lib/coverageParser'), require('./lib/reporter'), require('./lib/getGitData')));
9+
}(require('./lib/coverageParser'), require('./lib/reporter'), require('./lib/getGitData'), require('./lib/handleInput')));

lib/coverageParser.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
(function (Joi, util, logger) {
22
'use strict';
33

4-
var validFormats = ['lcov'],
5-
formatValidation = Joi.string().valid(validFormats).required();
4+
var validFormats = ['lcov'];
5+
var formatValidation = Joi.string().valid(validFormats).required();
6+
67
module.exports = {
78
getParser: function getParser(coverageFormat) {
89
var validFormat = Joi.validate(coverageFormat, formatValidation);

lib/getGitData.js

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
(function (logger, exec, Q) {
1+
(function (logger, exec, Promise) {
22
'use strict';
33
module.exports = {
44
getCommitId: function (commitId) {
5-
var deferred = Q.defer();
6-
process.nextTick(function () {
5+
return new Promise(function (resolve, reject) {
76
if (commitId) {
87
logger.debug('Provided Commit Id: ' + commitId);
9-
return deferred.resolve(commitId);
8+
return resolve(commitId);
109
}
1110

1211
var gitCommit = process.env.CODACY_GIT_COMMIT ||
@@ -19,19 +18,18 @@
1918

2019
if (gitCommit) {
2120
logger.debug('Received Commit Id: ' + gitCommit);
22-
return deferred.resolve(gitCommit);
21+
return resolve(gitCommit);
2322
}
2423

2524
exec('git rev-parse HEAD', function (err, commitId) {
2625
if (err) {
27-
return deferred.reject(err);
26+
return reject(err);
2827
}
2928
commitId = commitId.trim();
3029
logger.debug('Got Commit Id: ' + commitId);
31-
deferred.resolve(commitId);
30+
resolve(commitId);
3231
});
3332
});
34-
return deferred.promise;
3533
}
3634
};
37-
}(require('./logger')(), require('child_process').exec, require('q')));
35+
}(require('./logger')(), require('child_process').exec, require('bluebird')));

lib/handleInput.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
(function (parser, reporter, getGitData, logger, Promise, util) {
2+
'use strict';
3+
module.exports = function (input, opts) {
4+
opts = opts || {};
5+
6+
var token = opts.token || process.env.CODACY_REPO_TOKEN;
7+
var commit = opts.commit;
8+
var format = opts.format || 'lcov';
9+
var pathPrefix = opts.prefix || '';
10+
var loggerImpl;
11+
12+
loggerImpl = logger({
13+
verbose: opts.verbose,
14+
debug: opts.debug
15+
});
16+
17+
if (!token) {
18+
return Promise.reject(new Error('Token is required'));
19+
}
20+
21+
loggerImpl.info(util.format('Handling input for: token [%j], commitId [%j], endpoint [%j], format [%j], path prefix [%j], verbose [%j], debug [%j]',
22+
token, commit, opts.endpoint, format, pathPrefix, opts.verbose, opts.debug));
23+
24+
// Parse the coverage data for the given format and retrieve the commit id if we don't have it.
25+
return Promise.all([parser.getParser(format).parse(pathPrefix, input), getGitData.getCommitId(commit)]).spread(function (parsedCoverage, commitId) {
26+
// Now that we've parse the coverage data to the correct format, send it to Codacy.
27+
loggerImpl.trace(parsedCoverage);
28+
loggerImpl.debug('Sending coverage');
29+
return reporter({
30+
endpoint: opts.endpoint
31+
}).sendCoverage(token, commitId, parsedCoverage);
32+
});
33+
};
34+
}(require('./coverageParser'), require('./reporter'), require('./getGitData'), require('./logger'), require('bluebird'), require('util')));

lib/impl/lcov.js

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,38 @@
1-
(function (lcovParse, Q, Joi, logger, util, path) {
1+
(function (lcovParse, Promise, Joi, logger, util, path) {
22
'use strict';
3-
var lcovStringValidation = Joi.string().required(),
4-
optionsValidation = Joi.object().keys().optional();
3+
4+
var lcovStringValidation = Joi.string().required();
5+
var optionsValidation = Joi.object().keys().optional();
6+
57
module.exports = {
68
parse: function parseLcov(pathPrefix, lcovString, options) {
7-
logger.debug('Parsing Lcov Data');
8-
var deferred = Q.defer();
9-
process.nextTick(function () {
10-
var validLcov = Joi.validate(lcovString, lcovStringValidation),
11-
validOptions = Joi.validate(options, optionsValidation, {
12-
stripUnknown: true
13-
}),
14-
validationError = validLcov.error || validOptions.error;
9+
return new Promise(function (resolve, reject) {
10+
logger.debug('Parsing Lcov Data');
11+
var validLcov = Joi.validate(lcovString, lcovStringValidation);
12+
var validOptions = Joi.validate(options, optionsValidation, {
13+
stripUnknown: true
14+
});
15+
var validationError = validLcov.error || validOptions.error;
1516

1617
if (validationError) {
1718
logger.error(validationError);
18-
return deferred.reject(validationError);
19+
return reject(validationError);
1920
}
2021

2122
lcovParse(lcovString, function (err, data) {
2223
if (err) {
2324
err = new Error(err);
2425

2526
logger.error(err);
26-
return deferred.reject(err);
27+
return reject(err);
2728
}
2829

2930
var result = {
30-
total: 0,
31-
fileReports: []
32-
},
33-
totalLines = 0,
34-
totalHits = 0;
31+
total: 0,
32+
fileReports: []
33+
};
34+
var totalLines = 0;
35+
var totalHits = 0;
3536

3637
//TODO: Convert to reduce function
3738
data.forEach(function (stats) {
@@ -45,8 +46,6 @@
4546
totalHits += stats.lines.hit;
4647

4748
// The API uses integers only, so convert accordingly.
48-
console.log("pilas" + stats.lines.hit + '/' + stats.lines.found);
49-
5049
fileStats.total = Math.floor(util.safeDivision(stats.lines.hit, stats.lines.found) * 100);
5150

5251
//TODO: Convert to reduce function
@@ -67,10 +66,9 @@
6766

6867
logger.debug('Successfully Parsed Lcov Data');
6968

70-
deferred.resolve(result);
69+
resolve(result);
7170
});
7271
});
73-
return deferred.promise;
7472
}
7573
};
76-
}(require('lcov-parse'), require('q'), require('joi'), require('../logger')(), require('../util'), require('path')));
74+
}(require('lcov-parse'), require('bluebird'), require('joi'), require('../logger')(), require('../util'), require('path')));

0 commit comments

Comments
 (0)