Files
shields/lib/php-version.spec.js

65 lines
2.4 KiB
JavaScript

'use strict';
const { test, given } = require('sazerac');
const {
compare,
minorVersion,
versionReduction
} = require('./php-version');
const phpReleases = ['5.0', '5.1', '5.2', '5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2'];
describe('Text PHP version', function() {
test(minorVersion, () => {
given('7').expect('7.0');
given('7.1').expect('7.1');
given('5.3.3').expect('5.3');
given('hhvm').expect('');
});
test(versionReduction, () => {
given(['5.3', '5.4', '5.5'], phpReleases).expect('5.3 - 5.5');
given(['5.4', '5.5', '5.6', '7.0', '7.1'], phpReleases).expect('5.4 - 7.1');
given(['5.5', '5.6', '7.0', '7.1', '7.2'], phpReleases).expect('>= 5.5');
given(['5.5', '5.6', '7.1', '7.2'], phpReleases).expect('5.5, 5.6, 7.1, 7.2');
given(['7.0', '7.1', '7.2'], phpReleases).expect('>= 7');
given(['5.0', '5.1', '5.2', '5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2'], phpReleases).expect('>= 5');
given(['7.1', '7.2'], phpReleases).expect('>= 7.1');
given(['7.1'], phpReleases).expect('7.1');
given(['8.1'], phpReleases).expect('');
given([]).expect('');
});
});
describe('Composer version comparison', function() {
test(compare, () => {
// composer version scheme ordering
given('0.9.0', '1.0.0-alpha').expect(-1);
given('1.0.0-alpha', '1.0.0-alpha2').expect(-1);
given('1.0.0-alpha2', '1.0.0-beta').expect(-1);
given('1.0.0-beta', '1.0.0-beta2').expect(-1);
given('1.0.0-beta2', '1.0.0-RC').expect(-1);
given('1.0.0-RC', '1.0.0-RC2').expect(-1);
given('1.0.0-RC2', '1.0.0').expect(-1);
given('1.0.0', '1.0.0-patch').expect(-1);
given('1.0.0-patch', '1.0.0-dev').expect(-1);
given('1.0.0-dev', '1.0.1').expect(-1);
given('1.0.1', '1.0.x-dev').expect(-1);
// short versions should compare equal to long versions
given('1.0.0-p', '1.0.0-patch').expect(0);
given('1.0.0-a', '1.0.0-alpha').expect(0);
given('1.0.0-a2', '1.0.0-alpha2').expect(0);
given('1.0.0-b', '1.0.0-beta').expect(0);
given('1.0.0-b2', '1.0.0-beta2').expect(0);
// numeric suffixes
given('1.0.0-b1', '1.0.0-b2').expect(-1);
given('1.0.0-b10', '1.0.0-b11').expect(-1);
given('1.0.0-a1', '1.0.0-a2').expect(-1);
given('1.0.0-a10', '1.0.0-a11').expect(-1);
given('1.0.0-RC1', '1.0.0-RC2').expect(-1);
given('1.0.0-RC10', '1.0.0-RC11').expect(-1);
});
});