more lenient semver coerce in [wordpress] version (#3914)
This commit is contained in:
@@ -30,11 +30,17 @@ function getOfferedVersions() {
|
||||
})
|
||||
}
|
||||
|
||||
function toSemver(version) {
|
||||
function toSemver(v) {
|
||||
const parts = v.split('-')
|
||||
if (parts.length > 2) {
|
||||
return v
|
||||
}
|
||||
const version = parts[0]
|
||||
const suffix = parts[1] ? parts[1] : ''
|
||||
if (version.split('.').length === 2) {
|
||||
return `${version}.0`
|
||||
return suffix !== '' ? `${version}.0-${suffix}` : `${version}.0`
|
||||
} else {
|
||||
return version
|
||||
return v
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,6 +49,8 @@ async function versionColorForWordpressVersion(version) {
|
||||
|
||||
const latestVersion = toSemver(offeredVersions[0])
|
||||
version = toSemver(version)
|
||||
if (!semver.valid(latestVersion)) return 'lightgrey'
|
||||
if (!semver.valid(version)) return 'lightgrey'
|
||||
|
||||
if (version === latestVersion || semver.gtr(version, latestVersion)) {
|
||||
return 'brightgreen'
|
||||
@@ -54,6 +62,7 @@ async function versionColorForWordpressVersion(version) {
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
toSemver,
|
||||
getOfferedVersions,
|
||||
versionColorForWordpressVersion,
|
||||
}
|
||||
|
||||
@@ -1,10 +1,23 @@
|
||||
'use strict'
|
||||
|
||||
const { expect } = require('chai')
|
||||
const { versionColorForWordpressVersion } = require('./wordpress-version-color')
|
||||
const {
|
||||
toSemver,
|
||||
versionColorForWordpressVersion,
|
||||
} = require('./wordpress-version-color')
|
||||
|
||||
describe('WordPress version color helpers', function() {
|
||||
it('versionColorForWordpressVersion()', async function() {
|
||||
describe('toSemver() function', function() {
|
||||
it('coerces versions', function() {
|
||||
expect(toSemver('1.1.1')).to.equal('1.1.1')
|
||||
expect(toSemver('4.2')).to.equal('4.2.0')
|
||||
expect(toSemver('1.0.0-beta')).to.equal('1.0.0-beta')
|
||||
expect(toSemver('1.0-beta')).to.equal('1.0.0-beta')
|
||||
expect(toSemver('foobar')).to.equal('foobar')
|
||||
})
|
||||
})
|
||||
|
||||
describe('versionColorForWordpressVersion()', function() {
|
||||
it('generates correct colours for given versions', async function() {
|
||||
expect(await versionColorForWordpressVersion('11.2.0')).to.equal(
|
||||
'brightgreen'
|
||||
)
|
||||
@@ -13,5 +26,11 @@ describe('WordPress version color helpers', function() {
|
||||
)
|
||||
expect(await versionColorForWordpressVersion('3.2.0')).to.equal('yellow')
|
||||
expect(await versionColorForWordpressVersion('3.2')).to.equal('yellow')
|
||||
expect(await versionColorForWordpressVersion('4.7-beta.3')).to.equal(
|
||||
'yellow'
|
||||
)
|
||||
expect(await versionColorForWordpressVersion('cheese')).to.equal(
|
||||
'lightgrey'
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user