- Add only the most recent release to a channel (rather than adding all the one not added yet) - Avoid attempting to ad the version twice in case that version is already present in multiple upper branches
86 lines
2.7 KiB
JavaScript
86 lines
2.7 KiB
JavaScript
import test from 'ava';
|
|
import getLastRelease from '../lib/get-last-release';
|
|
|
|
test('Get the highest non-prerelease valid tag', t => {
|
|
const result = getLastRelease({
|
|
branch: {
|
|
name: 'master',
|
|
tags: [
|
|
{version: '2.0.0', gitTag: 'v2.0.0', gitHead: 'v2.0.0'},
|
|
{version: '1.0.0', gitTag: 'v1.0.0', gitHead: 'v1.0.0'},
|
|
{version: '3.0.0-beta.1', gitTag: 'v3.0.0-beta.1@beta', gitHead: 'v3.0.0-beta.1@beta'},
|
|
],
|
|
type: 'release',
|
|
},
|
|
options: {tagFormat: `v\${version}`},
|
|
});
|
|
|
|
t.deepEqual(result, {version: '2.0.0', gitTag: 'v2.0.0', name: 'v2.0.0', gitHead: 'v2.0.0', channels: undefined});
|
|
});
|
|
|
|
test('Get the highest prerelease valid tag, ignoring other tags from other prerelease channels', t => {
|
|
const result = getLastRelease({
|
|
branch: {
|
|
name: 'beta',
|
|
prerelease: 'beta',
|
|
channel: 'beta',
|
|
tags: [
|
|
{version: '1.0.0-beta.1', gitTag: 'v1.0.0-beta.1@beta', gitHead: 'v1.0.0-beta.1@beta', channels: ['beta']},
|
|
{version: '1.0.0-beta.2', gitTag: 'v1.0.0-beta.2@beta', gitHead: 'v1.0.0-beta.2@beta', channels: ['beta']},
|
|
{
|
|
version: '1.0.0-alpha.1',
|
|
gitTag: 'v1.0.0-alpha.1@alpha',
|
|
gitHead: 'v1.0.0-alpha.1@alpha',
|
|
channels: ['alpha'],
|
|
},
|
|
],
|
|
type: 'prerelease',
|
|
},
|
|
options: {tagFormat: `v\${version}`},
|
|
});
|
|
|
|
t.deepEqual(result, {
|
|
version: '1.0.0-beta.2',
|
|
gitTag: 'v1.0.0-beta.2@beta',
|
|
name: 'v1.0.0-beta.2',
|
|
gitHead: 'v1.0.0-beta.2@beta',
|
|
channels: ['beta'],
|
|
});
|
|
});
|
|
|
|
test('Return empty object if no valid tag is found', t => {
|
|
const result = getLastRelease({
|
|
branch: {
|
|
name: 'master',
|
|
tags: [{version: '3.0.0-beta.1', gitTag: 'v3.0.0-beta.1@beta', gitHead: 'v3.0.0-beta.1@beta'}],
|
|
type: 'release',
|
|
},
|
|
options: {tagFormat: `v\${version}`},
|
|
});
|
|
|
|
t.deepEqual(result, {});
|
|
});
|
|
|
|
test('Get the highest non-prerelease valid tag before a certain version', t => {
|
|
const result = getLastRelease(
|
|
{
|
|
branch: {
|
|
name: 'master',
|
|
channel: undefined,
|
|
tags: [
|
|
{version: '2.0.0', gitTag: 'v2.0.0', gitHead: 'v2.0.0'},
|
|
{version: '1.0.0', gitTag: 'v1.0.0', gitHead: 'v1.0.0'},
|
|
{version: '2.0.0-beta.1', gitTag: 'v2.0.0-beta.1@beta', gitHead: 'v2.0.0-beta.1@beta'},
|
|
{version: '2.1.0', gitTag: 'v2.1.0', gitHead: 'v2.1.0'},
|
|
{version: '2.1.1', gitTag: 'v2.1.1', gitHead: 'v2.1.1'},
|
|
],
|
|
type: 'release',
|
|
},
|
|
options: {tagFormat: `v\${version}`},
|
|
},
|
|
{before: '2.1.0'}
|
|
);
|
|
|
|
t.deepEqual(result, {version: '2.0.0', gitTag: 'v2.0.0', name: 'v2.0.0', gitHead: 'v2.0.0', channels: undefined});
|
|
});
|