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