Make branch a required param on bb/gitlab/travis-php (#5318)
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
const Joi = require('@hapi/joi')
|
||||
const { renderBuildStatusBadge } = require('../build-status')
|
||||
const { BaseJsonService } = require('..')
|
||||
const { BaseJsonService, redirector } = require('..')
|
||||
|
||||
const bitbucketPipelinesSchema = Joi.object({
|
||||
values: Joi.array()
|
||||
@@ -25,7 +25,7 @@ const bitbucketPipelinesSchema = Joi.object({
|
||||
.required(),
|
||||
}).required()
|
||||
|
||||
module.exports = class BitbucketPipelines extends BaseJsonService {
|
||||
class BitbucketPipelines extends BaseJsonService {
|
||||
static get category() {
|
||||
return 'build'
|
||||
}
|
||||
@@ -33,7 +33,7 @@ module.exports = class BitbucketPipelines extends BaseJsonService {
|
||||
static get route() {
|
||||
return {
|
||||
base: 'bitbucket/pipelines',
|
||||
pattern: ':user/:repo/:branch*',
|
||||
pattern: ':user/:repo/:branch+',
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,16 +41,6 @@ module.exports = class BitbucketPipelines extends BaseJsonService {
|
||||
return [
|
||||
{
|
||||
title: 'Bitbucket Pipelines',
|
||||
pattern: ':user/:repo',
|
||||
namedParams: {
|
||||
user: 'atlassian',
|
||||
repo: 'adf-builder-javascript',
|
||||
},
|
||||
staticPreview: this.render({ status: 'SUCCESSFUL' }),
|
||||
},
|
||||
{
|
||||
title: 'Bitbucket Pipelines branch',
|
||||
pattern: ':user/:repo/:branch',
|
||||
namedParams: {
|
||||
user: 'atlassian',
|
||||
repo: 'adf-builder-javascript',
|
||||
@@ -99,7 +89,23 @@ module.exports = class BitbucketPipelines extends BaseJsonService {
|
||||
}
|
||||
|
||||
async handle({ user, repo, branch }) {
|
||||
const data = await this.fetch({ user, repo, branch: branch || 'master' })
|
||||
const data = await this.fetch({ user, repo, branch })
|
||||
return this.constructor.render({ status: this.constructor.transform(data) })
|
||||
}
|
||||
}
|
||||
|
||||
const BitbucketPipelinesRedirector = redirector({
|
||||
category: 'build',
|
||||
route: {
|
||||
base: 'bitbucket/pipelines',
|
||||
pattern: ':user/:repo',
|
||||
},
|
||||
transformPath: ({ user, repo }) =>
|
||||
`/bitbucket/pipelines/${user}/${repo}/master`,
|
||||
dateAdded: new Date('2020-07-12'),
|
||||
})
|
||||
|
||||
module.exports = {
|
||||
BitbucketPipelines,
|
||||
BitbucketPipelinesRedirector,
|
||||
}
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
'use strict'
|
||||
|
||||
const { isBuildStatus } = require('../build-status')
|
||||
const t = (module.exports = require('../tester').createServiceTester())
|
||||
const { ServiceTester } = require('../tester')
|
||||
const t = (module.exports = new ServiceTester({
|
||||
id: 'BitbucketPipelines',
|
||||
title: 'Bitbucket Pipelines',
|
||||
pathPrefix: '/bitbucket/pipelines',
|
||||
}))
|
||||
|
||||
function bitbucketApiResponse(status) {
|
||||
return JSON.stringify({
|
||||
@@ -20,15 +25,8 @@ function bitbucketApiResponse(status) {
|
||||
})
|
||||
}
|
||||
|
||||
t.create('master build result (valid)')
|
||||
.get('/atlassian/adf-builder-javascript.json')
|
||||
.expectBadge({
|
||||
label: 'build',
|
||||
message: isBuildStatus,
|
||||
})
|
||||
|
||||
t.create('master build result (not found)')
|
||||
.get('/atlassian/not-a-repo.json')
|
||||
.get('/atlassian/not-a-repo/master.json')
|
||||
.expectBadge({ label: 'build', message: 'not found' })
|
||||
|
||||
t.create('branch build result (valid)')
|
||||
@@ -47,7 +45,7 @@ t.create('branch build result (never built)')
|
||||
.expectBadge({ label: 'build', message: 'never built' })
|
||||
|
||||
t.create('build result (passing)')
|
||||
.get('/atlassian/adf-builder-javascript.json')
|
||||
.get('/atlassian/adf-builder-javascript/master.json')
|
||||
.intercept(nock =>
|
||||
nock('https://api.bitbucket.org')
|
||||
.get(/^\/2.0\/.*/)
|
||||
@@ -56,7 +54,7 @@ t.create('build result (passing)')
|
||||
.expectBadge({ label: 'build', message: 'passing' })
|
||||
|
||||
t.create('build result (failing)')
|
||||
.get('/atlassian/adf-builder-javascript.json')
|
||||
.get('/atlassian/adf-builder-javascript/master.json')
|
||||
.intercept(nock =>
|
||||
nock('https://api.bitbucket.org')
|
||||
.get(/^\/2.0\/.*/)
|
||||
@@ -65,7 +63,7 @@ t.create('build result (failing)')
|
||||
.expectBadge({ label: 'build', message: 'failing' })
|
||||
|
||||
t.create('build result (error)')
|
||||
.get('/atlassian/adf-builder-javascript.json')
|
||||
.get('/atlassian/adf-builder-javascript/master.json')
|
||||
.intercept(nock =>
|
||||
nock('https://api.bitbucket.org')
|
||||
.get(/^\/2.0\/.*/)
|
||||
@@ -74,7 +72,7 @@ t.create('build result (error)')
|
||||
.expectBadge({ label: 'build', message: 'error' })
|
||||
|
||||
t.create('build result (stopped)')
|
||||
.get('/atlassian/adf-builder-javascript.json')
|
||||
.get('/atlassian/adf-builder-javascript/master.json')
|
||||
.intercept(nock =>
|
||||
nock('https://api.bitbucket.org')
|
||||
.get(/^\/2.0\/.*/)
|
||||
@@ -83,7 +81,7 @@ t.create('build result (stopped)')
|
||||
.expectBadge({ label: 'build', message: 'stopped' })
|
||||
|
||||
t.create('build result (expired)')
|
||||
.get('/atlassian/adf-builder-javascript.json')
|
||||
.get('/atlassian/adf-builder-javascript/master.json')
|
||||
.intercept(nock =>
|
||||
nock('https://api.bitbucket.org')
|
||||
.get(/^\/2.0\/.*/)
|
||||
@@ -92,10 +90,16 @@ t.create('build result (expired)')
|
||||
.expectBadge({ label: 'build', message: 'expired' })
|
||||
|
||||
t.create('build result (unexpected status)')
|
||||
.get('/atlassian/adf-builder-javascript.json')
|
||||
.get('/atlassian/adf-builder-javascript/master.json')
|
||||
.intercept(nock =>
|
||||
nock('https://api.bitbucket.org')
|
||||
.get(/^\/2.0\/.*/)
|
||||
.reply(200, bitbucketApiResponse('NEW_AND_UNEXPECTED'))
|
||||
)
|
||||
.expectBadge({ label: 'build', message: 'invalid response data' })
|
||||
|
||||
t.create('build result no branch redirect')
|
||||
.get('/atlassian/adf-builder-javascript.svg')
|
||||
.expectRedirect(
|
||||
'/bitbucket/pipelines/atlassian/adf-builder-javascript/master.svg'
|
||||
)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
const Joi = require('@hapi/joi')
|
||||
const { isBuildStatus, renderBuildStatusBadge } = require('../build-status')
|
||||
const { optionalUrl } = require('../validators')
|
||||
const { BaseSvgScrapingService, NotFound } = require('..')
|
||||
const { BaseSvgScrapingService, NotFound, redirector } = require('..')
|
||||
|
||||
const badgeSchema = Joi.object({
|
||||
message: Joi.alternatives()
|
||||
@@ -34,7 +34,7 @@ const documentation = `
|
||||
</p>
|
||||
`
|
||||
|
||||
module.exports = class GitlabPipelineStatus extends BaseSvgScrapingService {
|
||||
class GitlabPipelineStatus extends BaseSvgScrapingService {
|
||||
static get category() {
|
||||
return 'build'
|
||||
}
|
||||
@@ -42,7 +42,7 @@ module.exports = class GitlabPipelineStatus extends BaseSvgScrapingService {
|
||||
static get route() {
|
||||
return {
|
||||
base: 'gitlab/pipeline',
|
||||
pattern: ':user/:repo/:branch*',
|
||||
pattern: ':user/:repo/:branch+',
|
||||
queryParamSchema,
|
||||
}
|
||||
}
|
||||
@@ -51,14 +51,6 @@ module.exports = class GitlabPipelineStatus extends BaseSvgScrapingService {
|
||||
return [
|
||||
{
|
||||
title: 'Gitlab pipeline status',
|
||||
pattern: ':user/:repo',
|
||||
namedParams: { user: 'gitlab-org', repo: 'gitlab' },
|
||||
staticPreview: this.render({ status: 'passed' }),
|
||||
documentation,
|
||||
},
|
||||
{
|
||||
title: 'Gitlab pipeline status (branch)',
|
||||
pattern: ':user/:repo/:branch',
|
||||
namedParams: {
|
||||
user: 'gitlab-org',
|
||||
repo: 'gitlab',
|
||||
@@ -69,8 +61,7 @@ module.exports = class GitlabPipelineStatus extends BaseSvgScrapingService {
|
||||
},
|
||||
{
|
||||
title: 'Gitlab pipeline status (self-hosted)',
|
||||
pattern: ':user/:repo',
|
||||
namedParams: { user: 'GNOME', repo: 'pango' },
|
||||
namedParams: { user: 'GNOME', repo: 'pango', branch: 'master' },
|
||||
queryParams: { gitlab_url: 'https://gitlab.gnome.org' },
|
||||
staticPreview: this.render({ status: 'passed' }),
|
||||
documentation,
|
||||
@@ -83,7 +74,7 @@ module.exports = class GitlabPipelineStatus extends BaseSvgScrapingService {
|
||||
}
|
||||
|
||||
async handle(
|
||||
{ user, repo, branch = 'master' },
|
||||
{ user, repo, branch },
|
||||
{ gitlab_url: baseUrl = 'https://gitlab.com' }
|
||||
) {
|
||||
const { message: status } = await this._requestSvg({
|
||||
@@ -100,3 +91,18 @@ module.exports = class GitlabPipelineStatus extends BaseSvgScrapingService {
|
||||
return this.constructor.render({ status })
|
||||
}
|
||||
}
|
||||
|
||||
const GitlabPipelineStatusRedirector = redirector({
|
||||
category: 'build',
|
||||
route: {
|
||||
base: 'gitlab/pipeline',
|
||||
pattern: ':user/:repo',
|
||||
},
|
||||
transformPath: ({ user, repo }) => `/gitlab/pipeline/${user}/${repo}/master`,
|
||||
dateAdded: new Date('2020-07-12'),
|
||||
})
|
||||
|
||||
module.exports = {
|
||||
GitlabPipelineStatus,
|
||||
GitlabPipelineStatusRedirector,
|
||||
}
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
'use strict'
|
||||
|
||||
const { isBuildStatus } = require('../build-status')
|
||||
const t = (module.exports = require('../tester').createServiceTester())
|
||||
const { ServiceTester } = require('../tester')
|
||||
const t = (module.exports = new ServiceTester({
|
||||
id: 'GitlabPipeline',
|
||||
title: 'Gitlab Pipeline',
|
||||
pathPrefix: '/gitlab/pipeline',
|
||||
}))
|
||||
|
||||
t.create('Pipeline status').get('/gitlab-org/gitlab.json').expectBadge({
|
||||
t.create('Pipeline status').get('/gitlab-org/gitlab/v10.7.6.json').expectBadge({
|
||||
label: 'build',
|
||||
message: isBuildStatus,
|
||||
})
|
||||
|
||||
t.create('Pipeline status (branch)')
|
||||
.get('/gitlab-org/gitlab/v10.7.6.json')
|
||||
.expectBadge({
|
||||
label: 'build',
|
||||
message: isBuildStatus,
|
||||
})
|
||||
|
||||
t.create('Pipeline status (nonexistent branch)')
|
||||
.get('/gitlab-org/gitlab/nope-not-a-branch.json')
|
||||
.expectBadge({
|
||||
@@ -23,15 +21,19 @@ t.create('Pipeline status (nonexistent branch)')
|
||||
})
|
||||
|
||||
t.create('Pipeline status (nonexistent repo)')
|
||||
.get('/this-repo/does-not-exist.json')
|
||||
.get('/this-repo/does-not-exist/master.json')
|
||||
.expectBadge({
|
||||
label: 'build',
|
||||
message: 'repo not found',
|
||||
})
|
||||
|
||||
t.create('Pipeline status (custom gitlab URL)')
|
||||
.get('/GNOME/pango.json?gitlab_url=https://gitlab.gnome.org')
|
||||
.get('/GNOME/pango/master.json?gitlab_url=https://gitlab.gnome.org')
|
||||
.expectBadge({
|
||||
label: 'build',
|
||||
message: isBuildStatus,
|
||||
})
|
||||
|
||||
t.create('Pipeline no branch redirect')
|
||||
.get('/gitlab-org/gitlab.svg')
|
||||
.expectRedirect('/gitlab/pipeline/gitlab-org/gitlab/master.svg')
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
const { redirector } = require('..')
|
||||
|
||||
module.exports = redirector({
|
||||
const ciRedirect = redirector({
|
||||
category: 'platform-support',
|
||||
route: {
|
||||
base: 'travis-ci/php-v',
|
||||
@@ -11,6 +11,18 @@ module.exports = redirector({
|
||||
transformPath: ({ user, repo, branch }) =>
|
||||
branch
|
||||
? `/travis/php-v/${user}/${repo}/${branch}`
|
||||
: `/travis/php-v/${user}/${repo}`,
|
||||
: `/travis/php-v/${user}/${repo}/master`,
|
||||
dateAdded: new Date('2019-04-22'),
|
||||
})
|
||||
|
||||
const branchRedirect = redirector({
|
||||
category: 'platform-support',
|
||||
route: {
|
||||
base: 'travis/php-v',
|
||||
pattern: ':user/:repo',
|
||||
},
|
||||
transformPath: ({ user, repo }) => `/travis/php-v/${user}/${repo}/master`,
|
||||
dateAdded: new Date('2020-07-12'),
|
||||
})
|
||||
|
||||
module.exports = { ciRedirect, branchRedirect }
|
||||
|
||||
@@ -5,13 +5,17 @@ const { ServiceTester } = require('../tester')
|
||||
const t = (module.exports = new ServiceTester({
|
||||
id: 'TravisPhpVersionRedirect',
|
||||
title: 'TravisPhpVersionRedirect',
|
||||
pathPrefix: '/travis-ci/php-v',
|
||||
pathPrefix: '/',
|
||||
}))
|
||||
|
||||
t.create('travis-ci no branch')
|
||||
.get('/symfony/symfony.svg')
|
||||
.expectRedirect('/travis/php-v/symfony/symfony.svg')
|
||||
.get('travis-ci/php-v/symfony/symfony.svg')
|
||||
.expectRedirect('/travis/php-v/symfony/symfony/master.svg')
|
||||
|
||||
t.create('travis-ci branch')
|
||||
.get('/symfony/symfony/2.8.svg')
|
||||
.get('travis-ci/php-v/symfony/symfony/2.8.svg')
|
||||
.expectRedirect('/travis/php-v/symfony/symfony/2.8.svg')
|
||||
|
||||
t.create('travis no branch')
|
||||
.get('travis/php-v/symfony/symfony.svg')
|
||||
.expectRedirect('/travis/php-v/symfony/symfony/master.svg')
|
||||
|
||||
@@ -31,15 +31,15 @@ module.exports = class TravisPhpVersion extends BaseJsonService {
|
||||
static get route() {
|
||||
return {
|
||||
base: 'travis/php-v',
|
||||
pattern: ':user/:repo/:branch*',
|
||||
pattern: ':user/:repo/:branch+',
|
||||
}
|
||||
}
|
||||
|
||||
static get examples() {
|
||||
return [
|
||||
{
|
||||
title: 'PHP from Travis config',
|
||||
namedParams: { user: 'symfony', repo: 'symfony' },
|
||||
title: 'PHP version from Travis config',
|
||||
namedParams: { user: 'symfony', repo: 'symfony', branch: 'master' },
|
||||
staticPreview: this.render({ reduction: ['^7.1.3'] }),
|
||||
},
|
||||
]
|
||||
@@ -96,7 +96,7 @@ module.exports = class TravisPhpVersion extends BaseJsonService {
|
||||
}
|
||||
}
|
||||
|
||||
async handle({ user, repo, branch = 'master' }) {
|
||||
async handle({ user, repo, branch }) {
|
||||
const travisConfig = await this._requestJson({
|
||||
schema,
|
||||
url: `https://api.travis-ci.org/repos/${user}/${repo}/branches/${branch}`,
|
||||
|
||||
@@ -4,7 +4,7 @@ const { isPhpVersionReduction } = require('../test-validators')
|
||||
const t = (module.exports = require('../tester').createServiceTester())
|
||||
|
||||
t.create('gets the package version of symfony')
|
||||
.get('/symfony/symfony.json')
|
||||
.get('/symfony/symfony/master.json')
|
||||
.expectBadge({ label: 'php', message: isPhpVersionReduction })
|
||||
|
||||
t.create('gets the package version of symfony 2.8')
|
||||
@@ -12,13 +12,13 @@ t.create('gets the package version of symfony 2.8')
|
||||
.expectBadge({ label: 'php', message: isPhpVersionReduction })
|
||||
|
||||
t.create('gets the package version of yii')
|
||||
.get('/yiisoft/yii.json')
|
||||
.get('/yiisoft/yii/master.json')
|
||||
.expectBadge({ label: 'php', message: isPhpVersionReduction })
|
||||
|
||||
t.create('gets the package version of pagination-bundle')
|
||||
.get('/gpslab/pagination-bundle.json')
|
||||
.get('/gpslab/pagination-bundle/master.json')
|
||||
.expectBadge({ label: 'php', message: isPhpVersionReduction })
|
||||
|
||||
t.create('invalid package name')
|
||||
.get('/frodo/is-not-a-package.json')
|
||||
.get('/frodo/is-not-a-package/master.json')
|
||||
.expectBadge({ label: 'php', message: 'repo not found' })
|
||||
|
||||
Reference in New Issue
Block a user