[gratipay gemnasium snap-ci cauditor] add deprecation helpers, deprecate gemnasium (#1524)

This commit is contained in:
chris48s
2018-03-07 09:08:51 +00:00
committed by GitHub
parent 06fe43c51f
commit 1fab9d70de
6 changed files with 108 additions and 13 deletions

View File

@@ -1263,10 +1263,6 @@ const allBadgeExamples = [
title: 'bitHound',
previewUri: '/bithound/code/github/rexxars/sse-channel.svg'
},
{
title: 'Gemnasium',
previewUri: '/gemnasium/mathiasbynens/he.svg'
},
{
title: 'Hackage-Deps',
previewUri: '/hackage-deps/v/lens.svg'

View File

@@ -0,0 +1,14 @@
'use strict';
const deprecatedServices = {
'gittip': new Date('2017-12-29'),
'gratipay': new Date('2017-12-29'),
'gemnasium': new Date('2018-05-15'),
'snap': new Date('2018-01-23'),
'snap-ci': new Date('2018-01-23'),
'cauditor': new Date('2018-02-15'),
};
module.exports = {
deprecatedServices
}

View File

@@ -0,0 +1,23 @@
'use strict';
const { makeBadgeData, setBadgeColor } = require('./badge-data');
const { deprecatedServices } = require('./deprecated-services');
const isDeprecated = function (service, now=new Date(), depServices=deprecatedServices) {
if (!(service in depServices)) {
return false;
}
return now.getTime() >= depServices[service].getTime();
};
const getDeprecatedBadge = function (label, data) {
const badgeData = makeBadgeData(label, data);
setBadgeColor(badgeData, 'lightgray');
badgeData.text[1] = 'no longer available';
return badgeData;
};
module.exports = {
isDeprecated,
getDeprecatedBadge,
};

View File

@@ -0,0 +1,39 @@
'use strict';
const { expect } = require('chai');
const { test, given } = require('sazerac');
const { isDeprecated, getDeprecatedBadge } = require('./deprecation-helpers');
describe('Deprecated Badge Helper', function() {
it('makes "no longer available" badge', function() {
const badge = getDeprecatedBadge('foo', {});
expect(badge.text[0]).to.equal('foo');
expect(badge.text[1]).to.equal('no longer available');
expect(badge.colorscheme).to.equal('lightgray');
});
it('ignores colorB param', function() {
const badge = getDeprecatedBadge('foo', {colorB: 'fedcba'});
expect(badge.colorscheme).to.equal('lightgray');
});
});
describe('isDeprecated function', function () {
test(isDeprecated, function () {
given('fooservice', new Date(), {}).expect(false);
given(
'fooservice',
new Date('2001-01-11 23:59:00'),
{'fooservice': new Date('2001-01-12')}
).expect(false);
given(
'fooservice',
new Date('2001-01-12 00:00:01'),
{'fooservice': new Date('2001-01-12')}
).expect(true);
});
});

View File

@@ -10,6 +10,7 @@ const semver = require('semver');
const xml2js = require('xml2js');
const xpath = require('xpath');
const { isDeprecated, getDeprecatedBadge } = require('./lib/deprecation-helpers');
const { checkErrorResponse } = require('./lib/error-helper');
const analytics = require('./lib/analytics');
const config = require('./lib/server-config');
@@ -1096,12 +1097,10 @@ cache(function(data, match, sendBadge, request) {
camp.route(/^\/(?:gittip|gratipay(\/user|\/team|\/project)?)\/(.*)\.(svg|png|gif|jpg|json)$/,
cache(function(queryParams, match, sendBadge, request) {
const format = match[3];
const badgeData = getBadgeData('gratipay', queryParams);
const badgeData = getDeprecatedBadge('gratipay', queryParams);
if (badgeData.template === 'social') {
badgeData.logo = getLogo('gratipay', queryParams);
}
badgeData.colorscheme = 'lightgray';
badgeData.text[1] = 'no longer available';
sendBadge(format, badgeData);
}));
@@ -2997,6 +2996,13 @@ camp.route(/^\/gemnasium\/(.+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var userRepo = match[1]; // eg, `jekyll/jekyll`.
var format = match[2];
if (isDeprecated('gemnasium', serverStartTime)) {
const badgeData = getDeprecatedBadge('gemnasium', data);
sendBadge(format, badgeData);
return;
}
var options = 'https://gemnasium.com/' + userRepo + '.svg';
var badgeData = getBadgeData('dependencies', data);
request(options, function(err, res, buffer) {
@@ -6366,9 +6372,7 @@ cache(function(data, match, sendBadge, request) {
camp.route(/^\/snap(-ci?)\/([^/]+\/[^/]+)(?:\/(.+))\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
const format = match[4];
const badgeData = getBadgeData('snap CI', data);
badgeData.colorscheme = 'lightgray';
badgeData.text[1] = 'no longer available';
const badgeData = getDeprecatedBadge('snap CI', data);
sendBadge(format, badgeData);
}));
@@ -6857,9 +6861,7 @@ cache(function(data, match, sendBadge, request) {
camp.route(/^\/cauditor\/(mi|ccn|npath|hi|i|ca|ce|dit)\/([^/]+)\/([^/]+)\/(.+)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
const format = match[5];
const badgeData = getBadgeData('cauditor', data);
setBadgeColor(badgeData, 'lightgray');
badgeData.text[1] = 'no longer available';
const badgeData = getDeprecatedBadge('cauditor', data);
sendBadge(format, badgeData);
}));

View File

@@ -0,0 +1,21 @@
'use strict';
const ServiceTester = require('./runner/service-tester');
const { expect } = require('chai')
const { isDeprecated } = require('../lib/deprecation-helpers');
const t = new ServiceTester({ id: 'gemnasium', title: 'gemnasium' });
module.exports = t;
t.create('no longer available (previously dependencies)')
.get('/mathiasbynens/he.json')
.afterJSON(function(badge) {
if (isDeprecated('gemnasium')) {
expect(badge.name).to.equal('gemnasium');
expect(badge.value).to.equal('no longer available');
} else {
expect(badge.name).to.equal('dependencies');
}
});