Fix Codecov's support

This commit is contained in:
Thaddee Tyl 2014-09-26 23:42:14 +02:00
parent bb41b01a69
commit b935dada29

View File

@ -895,7 +895,7 @@ cache(function(data, match, sendBadge) {
var apiUrl = { var apiUrl = {
url: 'http://badge.coveralls.io/repos/' + userRepo + '/badge.png', url: 'http://badge.coveralls.io/repos/' + userRepo + '/badge.png',
followRedirect: false, followRedirect: false,
method: 'HEAD' method: 'HEAD',
}; };
if (branch) { if (branch) {
apiUrl.url += '?branch=' + branch; apiUrl.url += '?branch=' + branch;
@ -940,13 +940,13 @@ cache(function(data, match, sendBadge) {
// Codecov integration. // Codecov integration.
camp.route(/^\/codecov\/([^\/]+\/[^\/]+\/[^\/]+)(?:\/(.+))?\.(svg|png|gif|jpg)$/, camp.route(/^\/codecov\/([^\/]+\/[^\/]+\/[^\/]+)(?:\/(.+))?\.(svg|png|gif|jpg)$/,
cache(function(data, match, sendBadge) { cache(function(data, match, sendBadge) {
var userRepo = match[1]; // eg, `github/jekyll/jekyll` or `bitbucket/jekyll/jekyll`. var userRepo = match[1]; // eg, `github/codecov/example-python`.
var branch = match[2]; var branch = match[2];
var format = match[3]; var format = match[3];
var apiUrl = { var apiUrl = {
url: 'https://codecov.io/' + userRepo + '/coverage.png', url: 'https://codecov.io/' + userRepo + '/coverage.png',
followRedirect: false, followRedirect: false,
method: 'HEAD' method: 'HEAD',
}; };
if (branch) { if (branch) {
apiUrl.url += '?branch=' + branch; apiUrl.url += '?branch=' + branch;
@ -958,16 +958,24 @@ cache(function(data, match, sendBadge) {
sendBadge(format, badgeData); sendBadge(format, badgeData);
return; return;
} }
// X-Coverage header returns: n/a if 404/401 else range(0, 100) try {
var coverage = res.headers['X-Coverage']; // X-Coverage header returns: n/a if 404/401 else range(0, 100).
if (coverage == 'n/a') { // It can also yield a 302 Found with an "unknown" X-Coverage.
var coverage = res.headers['x-coverage'];
// Is `coverage` NaN when converted to number?
if (+coverage !== +coverage) {
badgeData.text[1] = 'unknown'; badgeData.text[1] = 'unknown';
sendBadge(format, badgeData); sendBadge(format, badgeData);
return; return;
} }
badgeData.text[1] = coverage + '%'; badgeData.text[1] = coverage + '%';
badgeData.colorscheme = coveragePercentageColor(percentage); badgeData.colorscheme = coveragePercentageColor(coverage);
sendBadge(format, badgeData); sendBadge(format, badgeData);
} catch(e) {
badgeData.text[1] = 'malformed';
sendBadge(format, badgeData);
return;
}
}).on('error', function(e) { }).on('error', function(e) {
badgeData.text[1] = 'inaccessible'; badgeData.text[1] = 'inaccessible';
sendBadge(format, badgeData); sendBadge(format, badgeData);
@ -981,7 +989,7 @@ cache(function(data, match, sendBadge) {
var format = match[2]; var format = match[2];
var options = { var options = {
method: 'HEAD', method: 'HEAD',
uri: 'https://codeclimate.com/' + userRepo + '/coverage.png' uri: 'https://codeclimate.com/' + userRepo + '/coverage.png',
}; };
var badgeData = getBadgeData('coverage', data); var badgeData = getBadgeData('coverage', data);
request(options, function(err, res) { request(options, function(err, res) {
@ -1021,7 +1029,7 @@ cache(function(data, match, sendBadge) {
var format = match[2]; var format = match[2];
var options = { var options = {
method: 'HEAD', method: 'HEAD',
uri: 'https://codeclimate.com/' + userRepo + '.png' uri: 'https://codeclimate.com/' + userRepo + '.png',
}; };
var badgeData = getBadgeData('code climate', data); var badgeData = getBadgeData('code climate', data);
request(options, function(err, res) { request(options, function(err, res) {
@ -1091,7 +1099,6 @@ cache(function(data, match, sendBadge) {
badgeData.colorscheme = coveragePercentageColor(percentage); badgeData.colorscheme = coveragePercentageColor(percentage);
sendBadge(format, badgeData); sendBadge(format, badgeData);
} catch(e) { } catch(e) {
console.error(e.stack);
badgeData.text[1] = 'invalid'; badgeData.text[1] = 'invalid';
sendBadge(format, badgeData); sendBadge(format, badgeData);
} }