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`.
 | ||||
|   const tagRegexp = escapeRegExp(template(tagFormat)({version: ' '})).replace(' ', '(.+)'); | ||||
|   const tags = (await gitTags()) | ||||
|     .map(tag => { | ||||
|       return {gitTag: tag, version: (tag.match(tagRegexp) || new Array(2))[1]}; | ||||
|     }) | ||||
|     .map(tag => ({gitTag: tag, version: (tag.match(tagRegexp) || new Array(2))[1]})) | ||||
|     .filter( | ||||
|       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); | ||||
| 
 | ||||
|   if (tags.length > 0) { | ||||
|     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); | ||||
|   const tag = await pLocate(tags, tag => isRefInHistory(tag.gitTag), {concurrency: 1, preserveOrder: true}); | ||||
| 
 | ||||
|     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'); | ||||
|  | ||||
| @ -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'); | ||||
| }); | ||||
| 
 | ||||
| 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 => { | ||||
|   // Create a git repository, set the current working directory at the root of the repo
 | ||||
|   await gitRepo(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user