Rewrite [appveyor] tests badge (#1940)

This commit is contained in:
Paul Melnikow
2018-08-20 14:49:59 -04:00
committed by GitHub
parent 77061fe6af
commit 656326d693
6 changed files with 152 additions and 127 deletions

View File

@@ -647,59 +647,6 @@ cache(function (data, match, sendBadge, request) {
});
}));
// AppVeyor test status integration.
camp.route(/^\/appveyor\/tests\/([^/]+\/[^/]+)(?:\/(.+))?\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var repo = match[1]; // eg, `gruntjs/grunt`.
var branch = match[2];
var format = match[3];
var apiUrl = 'https://ci.appveyor.com/api/projects/' + repo;
if (branch != null) {
apiUrl += '/branch/' + branch;
}
var badgeData = getBadgeData('tests', data);
request(apiUrl, { headers: { 'Accept': 'application/json' } }, function(err, res, buffer) {
if (err != null) {
badgeData.text[1] = 'inaccessible';
sendBadge(format, badgeData);
return;
}
try {
if (res.statusCode === 404) {
badgeData.text[1] = 'project not found or access denied';
sendBadge(format, badgeData);
return;
}
var data = JSON.parse(buffer);
var testsTotal = data.build.jobs.reduce((currentValue, job) => currentValue + job.testsCount, 0);
var testsPassed = data.build.jobs.reduce((currentValue, job) => currentValue + job.passedTestsCount, 0);
var testsFailed = data.build.jobs.reduce((currentValue, job) => currentValue + job.failedTestsCount, 0);
var testsSkipped = testsTotal - testsPassed - testsFailed;
if (testsPassed == testsTotal) {
badgeData.colorscheme = 'brightgreen';
} else if (testsFailed == 0 ) {
badgeData.colorscheme = 'green';
} else if (testsPassed == 0 ) {
badgeData.colorscheme = 'red';
} else{
badgeData.colorscheme = 'orange';
}
badgeData.text[1] = testsPassed + ' passed';
if (testsFailed > 0)
badgeData.text[1] += ', ' + testsFailed + ' failed';
if (testsSkipped > 0)
badgeData.text[1] += ', ' + testsSkipped + ' skipped';
sendBadge(format, badgeData);
} catch(e) {
badgeData.text[1] = 'invalid';
sendBadge(format, badgeData);
}
});
}));
// Old url for CodeBetter TeamCity instance.
camp.route(/^\/teamcity\/codebetter\/(.*)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {