fix: correctly determine next pre-release version
This commit is contained in:
parent
1d8c35d889
commit
0457a074e7
@ -1,14 +1,15 @@
|
|||||||
const semver = require('semver');
|
const semver = require('semver');
|
||||||
const {FIRST_RELEASE, FIRSTPRERELEASE} = require('./definitions/constants');
|
const {FIRST_RELEASE, FIRSTPRERELEASE} = require('./definitions/constants');
|
||||||
|
|
||||||
module.exports = ({branch, nextRelease: {type}, lastRelease, logger}) => {
|
module.exports = ({branch, nextRelease: {type, channel}, lastRelease, logger}) => {
|
||||||
let version;
|
let version;
|
||||||
if (lastRelease.version) {
|
if (lastRelease.version) {
|
||||||
|
const {major, minor, patch} = semver.parse(lastRelease.version);
|
||||||
version =
|
version =
|
||||||
branch.type === 'prerelease'
|
branch.type === 'prerelease'
|
||||||
? semver.prerelease(lastRelease.version)
|
? semver.prerelease(lastRelease.version) && lastRelease.channel === channel
|
||||||
? semver.inc(lastRelease.version, 'prerelease')
|
? semver.inc(lastRelease.version, 'prerelease')
|
||||||
: `${semver.inc(lastRelease.version, type)}-${branch.prerelease}.${FIRSTPRERELEASE}`
|
: `${semver.inc(`${major}.${minor}.${patch}`, type)}-${branch.prerelease}.${FIRSTPRERELEASE}`
|
||||||
: semver.inc(lastRelease.version, type);
|
: semver.inc(lastRelease.version, type);
|
||||||
logger.log('The next release version is %s', version);
|
logger.log('The next release version is %s', version);
|
||||||
} else {
|
} else {
|
||||||
|
@ -76,6 +76,16 @@ test('Increase version for patch release on prerelease branch', t => {
|
|||||||
}),
|
}),
|
||||||
'1.0.0-beta.2'
|
'1.0.0-beta.2'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
t.is(
|
||||||
|
getNextVersion({
|
||||||
|
branch: {name: 'alpha', type: 'prerelease', prerelease: 'alpha'},
|
||||||
|
nextRelease: {type: 'patch', channel: 'alpha'},
|
||||||
|
lastRelease: {version: '1.0.0-beta.1', channel: 'beta'},
|
||||||
|
logger: t.context.logger,
|
||||||
|
}),
|
||||||
|
'1.0.1-alpha.1'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Increase version for minor release on prerelease branch', t => {
|
test('Increase version for minor release on prerelease branch', t => {
|
||||||
@ -98,6 +108,16 @@ test('Increase version for minor release on prerelease branch', t => {
|
|||||||
}),
|
}),
|
||||||
'1.0.0-beta.2'
|
'1.0.0-beta.2'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
t.is(
|
||||||
|
getNextVersion({
|
||||||
|
branch: {name: 'alpha', type: 'prerelease', prerelease: 'alpha'},
|
||||||
|
nextRelease: {type: 'minor', channel: 'alpha'},
|
||||||
|
lastRelease: {version: '1.0.0-beta.1', channel: 'beta'},
|
||||||
|
logger: t.context.logger,
|
||||||
|
}),
|
||||||
|
'1.1.0-alpha.1'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Increase version for major release on prerelease branch', t => {
|
test('Increase version for major release on prerelease branch', t => {
|
||||||
@ -120,6 +140,16 @@ test('Increase version for major release on prerelease branch', t => {
|
|||||||
}),
|
}),
|
||||||
'1.0.0-beta.2'
|
'1.0.0-beta.2'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
t.is(
|
||||||
|
getNextVersion({
|
||||||
|
branch: {name: 'alpha', type: 'prerelease', prerelease: 'alpha'},
|
||||||
|
nextRelease: {type: 'major', channel: 'alpha'},
|
||||||
|
lastRelease: {version: '1.0.0-beta.1', channel: 'beta'},
|
||||||
|
logger: t.context.logger,
|
||||||
|
}),
|
||||||
|
'2.0.0-alpha.1'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Return 1.0.0 if there is no previous release on prerelease branch', t => {
|
test('Return 1.0.0 if there is no previous release on prerelease branch', t => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user