278 lines
7.6 KiB
JavaScript
278 lines
7.6 KiB
JavaScript
const test = require('ava');
|
|
const {stub} = require('sinon');
|
|
const getNextVersion = require('../lib/get-next-version');
|
|
|
|
test.beforeEach((t) => {
|
|
// Stub the logger functions
|
|
t.context.log = stub();
|
|
t.context.logger = {log: t.context.log};
|
|
});
|
|
|
|
test('Increase version for patch release', (t) => {
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {name: 'master', type: 'release', tags: [{gitTag: 'v1.0.0', version: '1.0.0', channels: [null]}]},
|
|
nextRelease: {type: 'patch'},
|
|
lastRelease: {version: '1.0.0', channels: [null]},
|
|
logger: t.context.logger,
|
|
}),
|
|
'1.0.1'
|
|
);
|
|
});
|
|
|
|
test('Increase version for minor release', (t) => {
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {name: 'master', type: 'release', tags: [{gitTag: 'v1.0.0', version: '1.0.0', channels: [null]}]},
|
|
nextRelease: {type: 'minor'},
|
|
lastRelease: {version: '1.0.0', channels: [null]},
|
|
logger: t.context.logger,
|
|
}),
|
|
'1.1.0'
|
|
);
|
|
});
|
|
|
|
test('Increase version for major release', (t) => {
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {name: 'master', type: 'release', tags: [{gitTag: 'v1.0.0', version: '1.0.0', channels: [null]}]},
|
|
nextRelease: {type: 'major'},
|
|
lastRelease: {version: '1.0.0', channels: [null]},
|
|
logger: t.context.logger,
|
|
}),
|
|
'2.0.0'
|
|
);
|
|
});
|
|
|
|
test('Return 1.0.0 if there is no previous release', (t) => {
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {name: 'master', type: 'release', tags: []},
|
|
nextRelease: {type: 'minor'},
|
|
lastRelease: {},
|
|
logger: t.context.logger,
|
|
}),
|
|
'1.0.0'
|
|
);
|
|
});
|
|
|
|
test('Increase version for patch release on prerelease branch', (t) => {
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {
|
|
name: 'beta',
|
|
type: 'prerelease',
|
|
prerelease: 'beta',
|
|
tags: [{gitTag: 'v1.0.0', version: '1.0.0', channels: [null]}],
|
|
},
|
|
nextRelease: {type: 'patch', channel: 'beta'},
|
|
lastRelease: {version: '1.0.0', channels: [null]},
|
|
logger: t.context.logger,
|
|
}),
|
|
'1.0.1-beta.1'
|
|
);
|
|
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {
|
|
name: 'beta',
|
|
type: 'prerelease',
|
|
prerelease: 'beta',
|
|
tags: [
|
|
{gitTag: 'v1.0.0', version: '1.0.0', channels: [null]},
|
|
{gitTag: 'v1.0.1-beta.1', version: '1.0.1-beta.1', channels: ['beta']},
|
|
],
|
|
},
|
|
nextRelease: {type: 'patch', channel: 'beta'},
|
|
lastRelease: {version: '1.0.1-beta.1', channels: ['beta']},
|
|
logger: t.context.logger,
|
|
}),
|
|
'1.0.1-beta.2'
|
|
);
|
|
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {
|
|
name: 'alpha',
|
|
type: 'prerelease',
|
|
prerelease: 'alpha',
|
|
tags: [{gitTag: 'v1.0.1-beta.1', version: '1.0.1-beta.1', channels: ['beta']}],
|
|
},
|
|
nextRelease: {type: 'patch', channel: 'alpha'},
|
|
lastRelease: {version: '1.0.1-beta.1', channels: ['beta']},
|
|
logger: t.context.logger,
|
|
}),
|
|
'1.0.2-alpha.1'
|
|
);
|
|
});
|
|
|
|
test('Increase version for minor release on prerelease branch', (t) => {
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {
|
|
name: 'beta',
|
|
type: 'prerelease',
|
|
prerelease: 'beta',
|
|
tags: [{gitTag: 'v1.0.0', version: '1.0.0', channels: [null]}],
|
|
},
|
|
nextRelease: {type: 'minor', channel: 'beta'},
|
|
lastRelease: {version: '1.0.0', channels: [null]},
|
|
logger: t.context.logger,
|
|
}),
|
|
'1.1.0-beta.1'
|
|
);
|
|
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {
|
|
name: 'beta',
|
|
type: 'prerelease',
|
|
prerelease: 'beta',
|
|
tags: [
|
|
{gitTag: 'v1.0.0', version: '1.0.0', channels: [null]},
|
|
{gitTag: 'v1.1.0-beta.1', version: '1.1.0-beta.1', channels: ['beta']},
|
|
],
|
|
},
|
|
nextRelease: {type: 'minor', channel: 'beta'},
|
|
lastRelease: {version: '1.1.0-beta.1', channels: ['beta']},
|
|
logger: t.context.logger,
|
|
}),
|
|
'1.1.0-beta.2'
|
|
);
|
|
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {
|
|
name: 'alpha',
|
|
type: 'prerelease',
|
|
prerelease: 'alpha',
|
|
tags: [{gitTag: 'v1.1.0-beta.1', version: '1.1.0-beta.1', channels: ['beta']}],
|
|
},
|
|
nextRelease: {type: 'minor', channel: 'alpha'},
|
|
lastRelease: {version: '1.1.0-beta.1', channels: ['beta']},
|
|
logger: t.context.logger,
|
|
}),
|
|
'1.2.0-alpha.1'
|
|
);
|
|
});
|
|
|
|
test('Increase version for major release on prerelease branch', (t) => {
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {
|
|
name: 'beta',
|
|
type: 'prerelease',
|
|
prerelease: 'beta',
|
|
tags: [{gitTag: 'v1.0.0', version: '1.0.0', channels: [null]}],
|
|
},
|
|
nextRelease: {type: 'major', channel: 'beta'},
|
|
lastRelease: {version: '1.0.0', channels: [null]},
|
|
logger: t.context.logger,
|
|
}),
|
|
'2.0.0-beta.1'
|
|
);
|
|
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {
|
|
name: 'beta',
|
|
type: 'prerelease',
|
|
prerelease: 'beta',
|
|
tags: [
|
|
{gitTag: 'v1.0.0', version: '1.0.0', channels: [null]},
|
|
{gitTag: 'v2.0.0-beta.1', version: '2.0.0-beta.1', channels: ['beta']},
|
|
],
|
|
},
|
|
nextRelease: {type: 'major', channel: 'beta'},
|
|
lastRelease: {version: '2.0.0-beta.1', channels: ['beta']},
|
|
logger: t.context.logger,
|
|
}),
|
|
'2.0.0-beta.2'
|
|
);
|
|
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {
|
|
name: 'alpha',
|
|
type: 'prerelease',
|
|
prerelease: 'alpha',
|
|
tags: [{gitTag: 'v2.0.0-beta.1', version: '2.0.0-beta.1', channels: ['beta']}],
|
|
},
|
|
nextRelease: {type: 'major', channel: 'alpha'},
|
|
lastRelease: {version: '2.0.0-beta.1', channels: ['beta']},
|
|
logger: t.context.logger,
|
|
}),
|
|
'3.0.0-alpha.1'
|
|
);
|
|
});
|
|
|
|
test('Return 1.0.0 if there is no previous release on prerelease branch', (t) => {
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {name: 'beta', type: 'prerelease', prerelease: 'beta', tags: []},
|
|
nextRelease: {type: 'minor'},
|
|
lastRelease: {},
|
|
logger: t.context.logger,
|
|
}),
|
|
'1.0.0-beta.1'
|
|
);
|
|
});
|
|
|
|
test('Increase version for release on prerelease branch after previous commits were merged to release branch', (t) => {
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {
|
|
name: 'beta',
|
|
type: 'prerelease',
|
|
prerelease: 'beta',
|
|
tags: [
|
|
{gitTag: 'v1.0.0', version: '1.0.0', channels: [null]},
|
|
{gitTag: 'v1.1.0', version: '1.1.0', channels: [null]}, // Version v1.1.0 released on default branch after beta was merged into master
|
|
{gitTag: 'v1.1.0-beta.1', version: '1.1.0-beta.1', channels: [null, 'beta']},
|
|
],
|
|
},
|
|
nextRelease: {type: 'minor'},
|
|
lastRelease: {version: '1.1.0', channels: [null]},
|
|
logger: t.context.logger,
|
|
}),
|
|
'1.2.0-beta.1'
|
|
);
|
|
});
|
|
|
|
test('Increase version for release on prerelease branch based on highest commit type since last regular release', (t) => {
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {
|
|
name: 'beta',
|
|
type: 'prerelease',
|
|
prerelease: 'beta',
|
|
tags: [
|
|
{gitTag: 'v1.0.0', version: '1.0.0', channels: [null]},
|
|
{gitTag: 'v1.1.0-beta.1', version: '1.1.0-beta.1', channels: [null, 'beta']},
|
|
],
|
|
},
|
|
nextRelease: {type: 'major'},
|
|
lastRelease: {version: 'v1.1.0-beta.1', channels: [null]},
|
|
logger: t.context.logger,
|
|
}),
|
|
'2.0.0-beta.1'
|
|
);
|
|
});
|
|
|
|
test('Increase version for release on prerelease branch when there is no regular releases on other branches', (t) => {
|
|
t.is(
|
|
getNextVersion({
|
|
branch: {
|
|
name: 'beta',
|
|
type: 'prerelease',
|
|
prerelease: 'beta',
|
|
tags: [{gitTag: 'v1.0.0-beta.1', version: '1.0.0-beta.1', channels: ['beta']}],
|
|
},
|
|
nextRelease: {type: 'minor', channel: 'beta'},
|
|
lastRelease: {version: 'v1.0.0-beta.1', channels: ['beta']},
|
|
logger: t.context.logger,
|
|
}),
|
|
'1.0.0-beta.2'
|
|
);
|
|
});
|