[appveyor bitbucket buildkite circleci codeship continuousphp docker readthedocs scrutinizer shippable travis] Extracted isBuildStatus test validator (#1767)

This commit is contained in:
Pyves
2018-07-13 09:21:02 +01:00
committed by GitHub
parent 6f9f723d92
commit 66c678e0dd
12 changed files with 37 additions and 27 deletions

View File

@@ -3,7 +3,7 @@
const Joi = require('joi'); const Joi = require('joi');
const ServiceTester = require('../service-tester'); const ServiceTester = require('../service-tester');
const isAppveyorBuildState = Joi.equal('failing', 'passing', 'running', 'queued'); const { isBuildStatus } = require('../test-validators');
const isAppveyorTestTotals = const isAppveyorTestTotals =
Joi.string().regex(/^(?:[0-9]+ (?:passed|skipped|failed)(?:, )?)+$/); Joi.string().regex(/^(?:[0-9]+ (?:passed|skipped|failed)(?:, )?)+$/);
@@ -13,12 +13,12 @@ module.exports = t;
// Test AppVeyor build status badge // Test AppVeyor build status badge
t.create('CI build status') t.create('CI build status')
.get('/ci/gruntjs/grunt.json') .get('/ci/gruntjs/grunt.json')
.expectJSONTypes(Joi.object().keys({ name: 'build', value: isAppveyorBuildState })); .expectJSONTypes(Joi.object().keys({ name: 'build', value: isBuildStatus }));
// Test AppVeyor branch build status badge // Test AppVeyor branch build status badge
t.create('CI build status on master branch') t.create('CI build status on master branch')
.get('/ci/gruntjs/grunt/master.json') .get('/ci/gruntjs/grunt/master.json')
.expectJSONTypes(Joi.object().keys({ name: 'build', value: isAppveyorBuildState })); .expectJSONTypes(Joi.object().keys({ name: 'build', value: isBuildStatus }));
// Test AppVeyor build status badge on a non-existing project // Test AppVeyor build status badge on a non-existing project
t.create('CI 404') t.create('CI 404')

View File

@@ -3,6 +3,7 @@
const Joi = require('joi'); const Joi = require('joi');
const ServiceTester = require('../service-tester'); const ServiceTester = require('../service-tester');
const { const {
isBuildStatus,
isMetric, isMetric,
isMetricOpenIssues isMetricOpenIssues
} = require('../test-validators'); } = require('../test-validators');
@@ -121,7 +122,7 @@ t.create('master build result (valid)')
.get('/pipelines/atlassian/adf-builder-javascript.json') .get('/pipelines/atlassian/adf-builder-javascript.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'build', name: 'build',
value: Joi.equal('failing', 'passing', 'error', 'stopped', 'expired') value: isBuildStatus
})); }));
t.create('master build result (not found)') t.create('master build result (not found)')
@@ -132,7 +133,7 @@ t.create('branch build result (valid)')
.get('/pipelines/atlassian/adf-builder-javascript/shields-test-dont-remove.json') .get('/pipelines/atlassian/adf-builder-javascript/shields-test-dont-remove.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'build', name: 'build',
value: Joi.equal('failing', 'passing', 'error', 'stopped', 'expired') value: isBuildStatus
})); }));
t.create('branch build result (not found)') t.create('branch build result (not found)')

View File

@@ -4,6 +4,7 @@ const Joi = require('joi');
const ServiceTester = require('../service-tester'); const ServiceTester = require('../service-tester');
const t = new ServiceTester({ id: 'buildkite', title: 'Buildkite Builds' }); const t = new ServiceTester({ id: 'buildkite', title: 'Buildkite Builds' });
const { invalidJSON } = require('../response-fixtures'); const { invalidJSON } = require('../response-fixtures');
const { isBuildStatus } = require('../test-validators');
module.exports = t; module.exports = t;
t.create('buildkite invalid pipeline') t.create('buildkite invalid pipeline')
@@ -14,14 +15,14 @@ t.create('buildkite valid pipeline')
.get('/3826789cf8890b426057e6fe1c4e683bdf04fa24d498885489/master.json') .get('/3826789cf8890b426057e6fe1c4e683bdf04fa24d498885489/master.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'build', name: 'build',
value: Joi.equal('failing', 'passing', 'unknown') value: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown'))
})); }));
t.create('buildkite valid pipeline skipping branch') t.create('buildkite valid pipeline skipping branch')
.get('/3826789cf8890b426057e6fe1c4e683bdf04fa24d498885489.json') .get('/3826789cf8890b426057e6fe1c4e683bdf04fa24d498885489.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'build', name: 'build',
value: Joi.equal('failing', 'passing', 'unknown') value: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown'))
})); }));
t.create('buildkite unknown branch') t.create('buildkite unknown branch')

View File

@@ -3,7 +3,7 @@
const Joi = require('joi'); const Joi = require('joi');
const ServiceTester = require('../service-tester'); const ServiceTester = require('../service-tester');
const { invalidJSON } = require('../response-fixtures'); const { invalidJSON } = require('../response-fixtures');
const isBuildStatus = Joi.string().regex(/^(passing|failed|no tests|scheduled|not run)$/); const { isBuildStatus } = require('../test-validators');
const t = new ServiceTester({ id: 'circleci', title: 'Circle CI' }); const t = new ServiceTester({ id: 'circleci', title: 'Circle CI' });
module.exports = t; module.exports = t;

View File

@@ -2,8 +2,7 @@
const Joi = require('joi'); const Joi = require('joi');
const ServiceTester = require('../service-tester'); const ServiceTester = require('../service-tester');
const { isBuildStatus } = require('../test-validators');
const isBuildStatus = Joi.string().regex(/^(passing|pending|failing|not built)$/);
const t = new ServiceTester({ id: 'codeship', title: 'codeship' }); const t = new ServiceTester({ id: 'codeship', title: 'codeship' });
module.exports = t; module.exports = t;

View File

@@ -2,6 +2,7 @@
const Joi = require('joi'); const Joi = require('joi');
const ServiceTester = require('../service-tester'); const ServiceTester = require('../service-tester');
const { isBuildStatus } = require('../test-validators');
const t = new ServiceTester({ id: 'continuousphp', title: 'continuousphp' }); const t = new ServiceTester({ id: 'continuousphp', title: 'continuousphp' });
module.exports = t; module.exports = t;
@@ -10,14 +11,14 @@ t.create('build status on default branch')
.get('/git-hub/doctrine/dbal.json') .get('/git-hub/doctrine/dbal.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'build', name: 'build',
value: Joi.equal('failing', 'passing', 'unknown', 'unstable') value: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown')),
})); }));
t.create('build status on named branch') t.create('build status on named branch')
.get('/git-hub/doctrine/dbal/develop.json') .get('/git-hub/doctrine/dbal/develop.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'build', name: 'build',
value: Joi.equal('failing', 'passing', 'unknown') value: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown')),
})); }));
t.create('unknown repo') t.create('unknown repo')

View File

@@ -7,8 +7,8 @@ const mapValues = require('lodash.mapvalues');
const { isMetric } = require('../test-validators'); const { isMetric } = require('../test-validators');
const { invalidJSON } = require('../response-fixtures'); const { invalidJSON } = require('../response-fixtures');
const { isBuildStatus } = require('../test-validators');
const isAutomatedBuildStatus = Joi.string().valid('automated', 'manual'); const isAutomatedBuildStatus = Joi.string().valid('automated', 'manual');
const isBuildStatus = Joi.string().regex(/^(passing|failing|building)$/);
const colorsB = mapValues(colorscheme, 'colorB'); const colorsB = mapValues(colorscheme, 'colorB');
const t = new ServiceTester({ id: 'docker', title: 'Docker Hub' }); const t = new ServiceTester({ id: 'docker', title: 'Docker Hub' });

View File

@@ -2,6 +2,7 @@
const Joi = require('joi'); const Joi = require('joi');
const ServiceTester = require('../service-tester'); const ServiceTester = require('../service-tester');
const { isBuildStatus } = require('../test-validators');
const t = new ServiceTester({ id: 'readthedocs', title: 'Read the Docs' }) const t = new ServiceTester({ id: 'readthedocs', title: 'Read the Docs' })
module.exports = t; module.exports = t;
@@ -10,21 +11,21 @@ t.create('build status')
.get('/pip.json') .get('/pip.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'docs', name: 'docs',
value: Joi.equal('failing', 'passing', 'unknown') value: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown')),
})); }));
t.create('build status for named version') t.create('build status for named version')
.get('/pip/stable.json') .get('/pip/stable.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'docs', name: 'docs',
value: Joi.equal('failing', 'passing', 'unknown') value: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown')),
})); }));
t.create('build status for named semantic version') t.create('build status for named semantic version')
.get('/scrapy/1.0.json') .get('/scrapy/1.0.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'docs', name: 'docs',
value: Joi.equal('failing', 'passing', 'unknown') value: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown')),
})); }));
t.create('unknown project') t.create('unknown project')

View File

@@ -3,9 +3,9 @@
const Joi = require('joi'); const Joi = require('joi');
const ServiceTester = require('../service-tester'); const ServiceTester = require('../service-tester');
const { const {
isBuildStatus,
isIntegerPercentage isIntegerPercentage
} = require('../test-validators'); } = require('../test-validators');
const isBuildStatus = Joi.string().regex(/^(passing|failed|error|pending|unknown)$/);
const t = new ServiceTester({ id: 'scrutinizer', title: 'Scrutinizer' }); const t = new ServiceTester({ id: 'scrutinizer', title: 'Scrutinizer' });
module.exports = t; module.exports = t;
@@ -42,14 +42,14 @@ t.create('build')
.get('/build/g/filp/whoops.json') .get('/build/g/filp/whoops.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'build', name: 'build',
value: isBuildStatus, value: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown')),
})); }));
t.create('build (branch)') t.create('build (branch)')
.get('/build/g/phpmyadmin/phpmyadmin/master.json') .get('/build/g/phpmyadmin/phpmyadmin/master.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'build', name: 'build',
value: isBuildStatus, value: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown')),
})); }));
t.create('project not found') t.create('project not found')

View File

@@ -3,8 +3,7 @@
const Joi = require('joi'); const Joi = require('joi');
const ServiceTester = require('../service-tester'); const ServiceTester = require('../service-tester');
const { invalidJSON } = require('../response-fixtures'); const { invalidJSON } = require('../response-fixtures');
const { isBuildStatus } = require('../test-validators');
const isBuildStatus = Joi.string().regex(/^(waiting|queued|processing|success|skipped|unstable|timeout|cancelled|failed|stopped)$/);
const t = new ServiceTester({ id: 'shippable', title: 'Shippable CI' }); const t = new ServiceTester({ id: 'shippable', title: 'Shippable CI' });
module.exports = t; module.exports = t;

View File

@@ -69,6 +69,10 @@ const isFormattedDate = Joi.alternatives().try(
const isDependencyState = withRegex(/^(\d+ out of date|\d+ deprecated|up to date)$/); const isDependencyState = withRegex(/^(\d+ out of date|\d+ deprecated|up to date)$/);
const isBuildStatus = Joi.equal('building', 'cancelled', 'error', 'expired', 'failed', 'failing', 'no tests',
'not built', 'not run', 'passing', 'pending', 'processing', 'queued', 'running',
'scheduled', 'skipped', 'stopped', 'success', 'timeout', 'unstable', 'waiting');
module.exports = { module.exports = {
isSemver, isSemver,
isVPlusTripleDottedVersion, isVPlusTripleDottedVersion,
@@ -86,5 +90,6 @@ module.exports = {
isDecimalPercentage, isDecimalPercentage,
isFileSize, isFileSize,
isFormattedDate, isFormattedDate,
isDependencyState isDependencyState,
isBuildStatus,
}; };

View File

@@ -2,7 +2,10 @@
const Joi = require('joi'); const Joi = require('joi');
const ServiceTester = require('../service-tester'); const ServiceTester = require('../service-tester');
const {isPhpVersionReduction} = require('../test-validators'); const {
isBuildStatus,
isPhpVersionReduction
} = require('../test-validators');
const t = new ServiceTester({ id: 'travis', title: 'Travis CI/PHP version from .travis.yml' }); const t = new ServiceTester({ id: 'travis', title: 'Travis CI/PHP version from .travis.yml' });
module.exports = t; module.exports = t;
@@ -13,14 +16,14 @@ t.create('build status on default branch')
.get('/rust-lang/rust.json') .get('/rust-lang/rust.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'build', name: 'build',
value: Joi.equal('failing', 'passing', 'unknown') value: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown')),
})); }));
t.create('build status on named branch') t.create('build status on named branch')
.get('/rust-lang/rust/stable.json') .get('/rust-lang/rust/stable.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'build', name: 'build',
value: Joi.equal('failing', 'passing', 'unknown') value: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown')),
})); }));
t.create('unknown repo') t.create('unknown repo')
@@ -45,14 +48,14 @@ t.create('build status on default branch')
.get('/com/ivandelabeldad/rackian-gateway.json') .get('/com/ivandelabeldad/rackian-gateway.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'build', name: 'build',
value: Joi.equal('failing', 'passing', 'unknown') value: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown')),
})); }));
t.create('build status on named branch') t.create('build status on named branch')
.get('/com/ivandelabeldad/rackian-gateway.json') .get('/com/ivandelabeldad/rackian-gateway.json')
.expectJSONTypes(Joi.object().keys({ .expectJSONTypes(Joi.object().keys({
name: 'build', name: 'build',
value: Joi.equal('failing', 'passing', 'unknown') value: Joi.alternatives().try(isBuildStatus, Joi.equal('unknown')),
})); }));
t.create('unknown repo') t.create('unknown repo')