87 lines
4.5 KiB
JavaScript
87 lines
4.5 KiB
JavaScript
const test = require('ava');
|
|
const {maintenance, prerelease, release} = require('../../lib/definitions/branches');
|
|
|
|
test('A "maintenance" branch is identified by having a "range" property or a "name" formatted like "N.x", "N.x.x" or "N.N.x"', t => {
|
|
t.true(maintenance.filter({name: '1.x.x'}));
|
|
t.true(maintenance.filter({name: '1.0.x'}));
|
|
t.true(maintenance.filter({name: '1.x'}));
|
|
t.true(maintenance.filter({name: 'some-name', range: '1.x.x'}));
|
|
t.true(maintenance.filter({name: 'some-name', range: '1.1.x'}));
|
|
t.true(maintenance.filter({name: 'some-name', range: ''}));
|
|
t.true(maintenance.filter({name: 'some-name', range: true}));
|
|
|
|
t.false(maintenance.filter({name: 'some-name', range: null}));
|
|
t.false(maintenance.filter({name: 'some-name', range: false}));
|
|
t.false(maintenance.filter({name: 'some-name'}));
|
|
t.false(maintenance.filter({name: '1.0.0'}));
|
|
t.false(maintenance.filter({name: 'x.x.x'}));
|
|
});
|
|
|
|
test('A "maintenance" branches must have a "range" property formatted like "N.x", "N.x.x" or "N.N.x"', t => {
|
|
t.true(maintenance.branchValidator({name: 'some-name', range: '1.x.x'}));
|
|
t.true(maintenance.branchValidator({name: 'some-name', range: '1.1.x'}));
|
|
|
|
t.false(maintenance.branchValidator({name: 'some-name', range: '^1.0.0'}));
|
|
t.false(maintenance.branchValidator({name: 'some-name', range: '>=1.0.0 <2.0.0'}));
|
|
t.false(maintenance.branchValidator({name: 'some-name', range: '1.0.0'}));
|
|
t.false(maintenance.branchValidator({name: 'some-name', range: 'wrong-range'}));
|
|
t.false(maintenance.branchValidator({name: 'some-name', range: true}));
|
|
t.false(maintenance.branchValidator({name: 'some-name', range: ''}));
|
|
});
|
|
|
|
test('The "maintenance" branches must have unique ranges', t => {
|
|
t.true(maintenance.branchesValidator([{range: '1.x.x'}, {range: '1.0.x'}]));
|
|
|
|
t.false(maintenance.branchesValidator([{range: '1.x.x'}, {range: '1.x.x'}]));
|
|
t.false(maintenance.branchesValidator([{range: '1.x.x'}, {range: '1.x'}]));
|
|
});
|
|
|
|
test('A "prerelease" branch is identified by having a thruthy "prerelease" property', t => {
|
|
t.true(prerelease.filter({name: 'some-name', prerelease: true}));
|
|
t.true(prerelease.filter({name: 'some-name', prerelease: 'beta'}));
|
|
t.true(prerelease.filter({name: 'some-name', prerelease: ''}));
|
|
|
|
t.false(prerelease.filter({name: 'some-name', prerelease: null}));
|
|
t.false(prerelease.filter({name: 'some-name', prerelease: false}));
|
|
t.false(prerelease.filter({name: 'some-name'}));
|
|
});
|
|
|
|
test('A "prerelease" branch must have a valid prerelease detonation in "prerelease" property or in "name" if "prerelease" is "true"', t => {
|
|
t.true(prerelease.branchValidator({name: 'beta', prerelease: true}));
|
|
t.true(prerelease.branchValidator({name: 'some-name', prerelease: 'beta'}));
|
|
|
|
t.false(prerelease.branchValidator({name: 'some-name', prerelease: ''}));
|
|
t.false(prerelease.branchValidator({name: 'some-name', prerelease: null}));
|
|
t.false(prerelease.branchValidator({name: 'some-name', prerelease: false}));
|
|
t.false(prerelease.branchValidator({name: 'some-name', prerelease: '000'}));
|
|
t.false(prerelease.branchValidator({name: 'some-name', prerelease: '#beta'}));
|
|
t.false(prerelease.branchValidator({name: '000', prerelease: true}));
|
|
t.false(prerelease.branchValidator({name: '#beta', prerelease: true}));
|
|
});
|
|
|
|
test('The "prerelease" branches must have unique "prerelease" property', t => {
|
|
t.true(prerelease.branchesValidator([{prerelease: 'beta'}, {prerelease: 'alpha'}]));
|
|
|
|
t.false(prerelease.branchesValidator([{range: 'beta'}, {range: 'beta'}, {range: 'alpha'}]));
|
|
});
|
|
|
|
test('A "release" branch is identified by not havin a "range" or "prerelease" property or a "name" formatted like "N.x", "N.x.x" or "N.N.x"', t => {
|
|
t.true(release.filter({name: 'some-name'}));
|
|
|
|
t.false(release.filter({name: '1.x.x'}));
|
|
t.false(release.filter({name: '1.0.x'}));
|
|
t.false(release.filter({name: 'some-name', range: '1.x.x'}));
|
|
t.false(release.filter({name: 'some-name', range: '1.1.x'}));
|
|
t.false(release.filter({name: 'some-name', prerelease: true}));
|
|
t.false(release.filter({name: 'some-name', prerelease: 'beta'}));
|
|
});
|
|
|
|
test('There must be between 1 and 3 release branches', t => {
|
|
t.true(release.branchesValidator([{name: 'branch1'}]));
|
|
t.true(release.branchesValidator([{name: 'branch1'}, {name: 'branch2'}]));
|
|
t.true(release.branchesValidator([{name: 'branch1'}, {name: 'branch2'}, {name: 'branch3'}]));
|
|
|
|
t.false(release.branchesValidator([]));
|
|
t.false(release.branchesValidator([{name: 'branch1'}, {name: 'branch2'}, {name: 'branch3'}, {name: 'branch4'}]));
|
|
});
|