[appveyor bitbucket buildkite circleci codeship continuousphp docker readthedocs scrutinizer shippable travis] Extracted isBuildStatus test validator (#1767)
This commit is contained in:
@@ -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')
|
||||||
|
|||||||
@@ -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)')
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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' });
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
Reference in New Issue
Block a user