fix: handle case with no last release in history
This commit is contained in:
parent
30ee231116
commit
51e340f44e
@ -30,9 +30,7 @@ module.exports = async (tagFormat, logger) => {
|
|||||||
// so it's guaranteed to no be present in the `tagFormat`.
|
// so it's guaranteed to no be present in the `tagFormat`.
|
||||||
const tagRegexp = escapeRegExp(template(tagFormat)({version: ' '})).replace(' ', '(.+)');
|
const tagRegexp = escapeRegExp(template(tagFormat)({version: ' '})).replace(' ', '(.+)');
|
||||||
const tags = (await gitTags())
|
const tags = (await gitTags())
|
||||||
.map(tag => {
|
.map(tag => ({gitTag: tag, version: (tag.match(tagRegexp) || new Array(2))[1]}))
|
||||||
return {gitTag: tag, version: (tag.match(tagRegexp) || new Array(2))[1]};
|
|
||||||
})
|
|
||||||
.filter(
|
.filter(
|
||||||
tag => tag.version && semver.valid(semver.clean(tag.version)) && !semver.prerelease(semver.clean(tag.version))
|
tag => tag.version && semver.valid(semver.clean(tag.version)) && !semver.prerelease(semver.clean(tag.version))
|
||||||
)
|
)
|
||||||
@ -40,14 +38,11 @@ module.exports = async (tagFormat, logger) => {
|
|||||||
|
|
||||||
debug('found tags: %o', tags);
|
debug('found tags: %o', tags);
|
||||||
|
|
||||||
if (tags.length > 0) {
|
const tag = await pLocate(tags, tag => isRefInHistory(tag.gitTag), {concurrency: 1, preserveOrder: true});
|
||||||
const {gitTag, version} = await pLocate(tags, tag => isRefInHistory(tag.gitTag), {
|
|
||||||
concurrency: 1,
|
|
||||||
preserveOrder: true,
|
|
||||||
});
|
|
||||||
logger.log('Found git tag %s associated with version %s', gitTag, version);
|
|
||||||
|
|
||||||
return {gitHead: await gitTagHead(gitTag), gitTag, version};
|
if (tag) {
|
||||||
|
logger.log('Found git tag %s associated with version %s', tag.gitTag, tag.version);
|
||||||
|
return {gitHead: await gitTagHead(tag.gitTag), ...tag};
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.log('No git tag version found');
|
logger.log('No git tag version found');
|
||||||
|
@ -79,6 +79,23 @@ test.serial('Return empty object if no valid tag is found', async t => {
|
|||||||
t.is(t.context.log.args[0][0], 'No git tag version found');
|
t.is(t.context.log.args[0][0], 'No git tag version found');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test.serial('Return empty object if no valid tag is found in history', async t => {
|
||||||
|
// Create a git repository, set the current working directory at the root of the repo
|
||||||
|
await gitRepo();
|
||||||
|
await gitCommits(['First']);
|
||||||
|
await gitCheckout('other-branch');
|
||||||
|
await gitCommits(['Second']);
|
||||||
|
await gitTagVersion('v1.0.0');
|
||||||
|
await gitTagVersion('v2.0.0');
|
||||||
|
await gitTagVersion('v3.0.0');
|
||||||
|
await gitCheckout('master', false);
|
||||||
|
|
||||||
|
const result = await getLastRelease(`v\${version}`, t.context.logger);
|
||||||
|
|
||||||
|
t.deepEqual(result, {});
|
||||||
|
t.is(t.context.log.args[0][0], 'No git tag version found');
|
||||||
|
});
|
||||||
|
|
||||||
test.serial('Get the highest valid tag corresponding to the "tagFormat"', async t => {
|
test.serial('Get the highest valid tag corresponding to the "tagFormat"', async t => {
|
||||||
// Create a git repository, set the current working directory at the root of the repo
|
// Create a git repository, set the current working directory at the root of the repo
|
||||||
await gitRepo();
|
await gitRepo();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user