Skip to content

Commit

Permalink
Merge branch 'master' into codeclimate-multiple-repos
Browse files Browse the repository at this point in the history
  • Loading branch information
PyvesB authored Mar 12, 2022
2 parents 17303af + 5a31a90 commit 81ed91c
Show file tree
Hide file tree
Showing 9 changed files with 24 additions and 155 deletions.
19 changes: 2 additions & 17 deletions services/bower/bower-version.service.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import Joi from 'joi'
import { renderVersionBadge } from '../version.js'
import { InvalidResponse, redirector } from '../index.js'
import { InvalidResponse } from '../index.js'
import BaseBowerService from './bower-base.js'

const queryParamSchema = Joi.object({
include_prereleases: Joi.equal(''),
}).required()

class BowerVersion extends BaseBowerService {
export default class BowerVersion extends BaseBowerService {
static category = 'version'
static route = { base: 'bower/v', pattern: ':packageName', queryParamSchema }

Expand Down Expand Up @@ -47,18 +47,3 @@ class BowerVersion extends BaseBowerService {
return renderVersionBadge({ version })
}
}

const BowerVersionRedirect = redirector({
category: 'version',
route: {
base: 'bower/vpre',
pattern: ':packageName',
},
transformPath: ({ packageName }) => `/bower/v/${packageName}`,
transformQueryParams: params => ({
include_prereleases: null,
}),
dateAdded: new Date('2019-12-15'),
})

export { BowerVersion, BowerVersionRedirect }
2 changes: 1 addition & 1 deletion services/bower/bower-version.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import nock from 'nock'
import { cleanUpNockAfterEach, defaultContext } from '../test-helpers.js'
import { InvalidResponse } from '../index.js'
import LibrariesIoApiProvider from '../librariesio/librariesio-api-provider.js'
import { BowerVersion } from './bower-version.service.js'
import BowerVersion from './bower-version.service.js'

describe('BowerVersion', function () {
test(BowerVersion.transform, () => {
Expand Down
4 changes: 0 additions & 4 deletions services/bower/bower-version.tester.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,3 @@ t.create('Pre Version for Invalid Package')
.timeout(10000)
.get('/v/it-is-a-invalid-package-should-error.json?include_prereleases')
.expectBadge({ label: 'bower', message: 'package not found' })

t.create('Version (legacy redirect: vpre)')
.get('/vpre/bootstrap.svg')
.expectRedirect('/bower/v/bootstrap.svg?include_prereleases')
79 changes: 5 additions & 74 deletions services/shippable/shippable.service.js
Original file line number Diff line number Diff line change
@@ -1,80 +1,11 @@
import Joi from 'joi'
import { renderBuildStatusBadge } from '../build-status.js'
import { BaseJsonService, NotFound, redirector } from '../index.js'
import { deprecatedService } from '../index.js'

// source: https://github.com/badges/shields/pull/1362#discussion_r161693830
const statusCodes = {
0: 'waiting',
10: 'queued',
20: 'processing',
30: 'success',
40: 'skipped',
50: 'unstable',
60: 'timeout',
70: 'cancelled',
80: 'failed',
90: 'stopped',
}

const schema = Joi.array()
.items(
Joi.object({
branchName: Joi.string().required(),
statusCode: Joi.number()
.valid(...Object.keys(statusCodes).map(key => parseInt(key)))
.required(),
}).required()
)
.required()

class Shippable extends BaseJsonService {
static category = 'build'

static route = {
base: 'shippable',
pattern: ':projectId/:branch+',
}

static examples = [
{
title: 'Shippable',
namedParams: {
projectId: '5444c5ecb904a4b21567b0ff',
branch: 'master',
},
staticPreview: this.render({ code: 30 }),
},
]

static defaultBadgeData = { label: 'shippable' }

static render({ code }) {
return renderBuildStatusBadge({ label: 'build', status: statusCodes[code] })
}

async fetch({ projectId }) {
const url = `https://api.shippable.com/projects/${projectId}/branchRunStatus`
return this._requestJson({ schema, url })
}

async handle({ projectId, branch }) {
const data = await this.fetch({ projectId })
const builds = data.filter(result => result.branchName === branch)
if (builds.length === 0) {
throw new NotFound({ prettyMessage: 'branch not found' })
}
return this.constructor.render({ code: builds[0].statusCode })
}
}

const ShippableRedirect = redirector({
export default deprecatedService({
category: 'build',
route: {
base: 'shippable',
pattern: ':projectId',
format: '(?:.+?)',
},
transformPath: ({ projectId }) => `/shippable/${projectId}/master`,
dateAdded: new Date('2020-07-18'),
label: 'shippable',
dateAdded: new Date('2022-03-12'),
})

export { Shippable, ShippableRedirect }
37 changes: 11 additions & 26 deletions services/shippable/shippable.tester.js
Original file line number Diff line number Diff line change
@@ -1,35 +1,20 @@
import { isBuildStatus } from '../build-status.js'
import { ServiceTester } from '../tester.js'

export const t = new ServiceTester({
id: 'Shippable',
id: 'shippable',
title: 'Shippable',
pathPrefix: '/shippable',
})

t.create('build status (valid)')
t.create('no longer available (previously build status with branch)')
.get('/5444c5ecb904a4b21567b0ff/master.json')
.expectBadge({
label: 'build',
message: isBuildStatus,
label: 'shippable',
message: 'no longer available',
})

t.create('build status (branch not found)')
.get('/5444c5ecb904a4b21567b0ff/not-a-branch.json')
.expectBadge({ label: 'shippable', message: 'branch not found' })

t.create('build status (build not found)')
.get('/not-a-build/master.json')
.expectBadge({ label: 'shippable', message: 'not found' })

t.create('build status (unexpected status code)')
.get('/5444c5ecb904a4b21567b0ff/master.json')
.intercept(nock =>
nock('https://api.shippable.com/')
.get('/projects/5444c5ecb904a4b21567b0ff/branchRunStatus')
.reply(200, '[{ "branchName": "master", "statusCode": 63 }]')
)
.expectBadge({ label: 'shippable', message: 'invalid response data' })

t.create('build status (no branch redirect)')
.get('/5444c5ecb904a4b21567b0ff.svg')
.expectRedirect('/shippable/5444c5ecb904a4b21567b0ff/master.svg')
t.create('no longer available (previously build status without branch)')
.get('/5444c5ecb904a4b21567b0ff.json')
.expectBadge({
label: 'shippable',
message: 'no longer available',
})
16 changes: 0 additions & 16 deletions services/teamcity/teamcity-coverage-redirect.service.js

This file was deleted.

15 changes: 0 additions & 15 deletions services/teamcity/teamcity-coverage-redirect.tester.js

This file was deleted.

4 changes: 2 additions & 2 deletions services/version.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,12 @@ function latestMaybeSemVer(versions, pre) {
try {
// coerce to string then lowercase otherwise alpha > RC
version = versions.sort((a, b) =>
semver.rcompare(
semver.compareBuild(
`${a}`.toLowerCase(),
`${b}`.toLowerCase(),
/* loose */ true
)
)[0]
)[versions.length - 1]
} catch (e) {
version = latestDottedVersion(versions)
}
Expand Down
3 changes: 3 additions & 0 deletions services/version.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,9 @@ describe('Version helpers', function () {
given(['1.0.0', '1.0.2', '1.1', '1.0', 'notaversion2', '12bcde4']).expect(
'1.1'
)

// build qualifiers - https://github.com/badges/shields/issues/4172
given(['0.3.9', '0.4.0+1', '0.4.0+9']).expect('0.4.0+9')
})

test(slice, () => {
Expand Down

0 comments on commit 81ed91c

Please sign in to comment.