fix: get correct version if prerelease branch shares version with ... (#2416)
This commit is contained in:
		
							parent
							
								
									9514e20e7b
								
							
						
					
					
						commit
						e4229f9c68
					
				| @ -30,7 +30,11 @@ export default ({ branch, options: { tagFormat } }, { before } = {}) => { | |||||||
|   const [{ version, gitTag, channels } = {}] = branch.tags |   const [{ version, gitTag, channels } = {}] = branch.tags | ||||||
|     .filter( |     .filter( | ||||||
|       (tag) => |       (tag) => | ||||||
|         ((branch.type === "prerelease" && tag.channels.some((channel) => isSameChannel(branch.channel, channel))) || |         ((branch.type === "prerelease" && | ||||||
|  |           tag.channels.some((channel) => isSameChannel(branch.channel, channel)) && | ||||||
|  |           semver | ||||||
|  |             .parse(tag.version) | ||||||
|  |             .prerelease.includes(branch.prerelease === true ? branch.name : branch.prerelease)) || | ||||||
|           !semver.prerelease(tag.version)) && |           !semver.prerelease(tag.version)) && | ||||||
|         (isUndefined(before) || semver.lt(tag.version, before)) |         (isUndefined(before) || semver.lt(tag.version, before)) | ||||||
|     ) |     ) | ||||||
|  | |||||||
| @ -43,6 +43,43 @@ test("Get the highest prerelease valid tag, ignoring other tags from other prere | |||||||
|   }); |   }); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | test("Get the correct prerelease tag, when other prereleases share the same git HEAD", (t) => { | ||||||
|  |   const testConfig = { | ||||||
|  |     branch: { | ||||||
|  |       name: "alpha", | ||||||
|  |       prerelease: "alpha", | ||||||
|  |       channel: "alpha", | ||||||
|  |       tags: [ | ||||||
|  |         { version: "1.0.0-beta.1", gitTag: "v1.0.0-beta.1", gitHead: "v1.0.0-beta.1", channels: ["beta"] }, | ||||||
|  |         { version: "1.0.0-beta.2", gitTag: "v1.0.0-beta.2", gitHead: "v1.0.0-alpha.1", channels: ["alpha", "beta"] }, | ||||||
|  |         { version: "1.0.0-alpha.1", gitTag: "v1.0.0-alpha.1", gitHead: "v1.0.0-alpha.1", channels: ["alpha", "beta"] }, | ||||||
|  |       ], | ||||||
|  |       type: "prerelease", | ||||||
|  |     }, | ||||||
|  |     options: { tagFormat: `v\${version}`, debug: true }, | ||||||
|  |   }; | ||||||
|  |   const firstResult = getLastRelease(testConfig); | ||||||
|  | 
 | ||||||
|  |   t.deepEqual(firstResult, { | ||||||
|  |     version: "1.0.0-alpha.1", | ||||||
|  |     gitTag: "v1.0.0-alpha.1", | ||||||
|  |     name: "v1.0.0-alpha.1", | ||||||
|  |     gitHead: "v1.0.0-alpha.1", | ||||||
|  |     channels: ["alpha", "beta"], | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   testConfig.branch.prerelease = true; | ||||||
|  |   const secondResult = getLastRelease(testConfig); | ||||||
|  | 
 | ||||||
|  |   t.deepEqual(secondResult, { | ||||||
|  |     version: "1.0.0-alpha.1", | ||||||
|  |     gitTag: "v1.0.0-alpha.1", | ||||||
|  |     name: "v1.0.0-alpha.1", | ||||||
|  |     gitHead: "v1.0.0-alpha.1", | ||||||
|  |     channels: ["alpha", "beta"], | ||||||
|  |   }); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
| test("Return empty object if no valid tag is found", (t) => { | test("Return empty object if no valid tag is found", (t) => { | ||||||
|   const result = getLastRelease({ |   const result = getLastRelease({ | ||||||
|     branch: { |     branch: { | ||||||
|  | |||||||
| @ -275,3 +275,24 @@ test("Increase version for release on prerelease branch when there is no regular | |||||||
|     "1.0.0-beta.2" |     "1.0.0-beta.2" | ||||||
|   ); |   ); | ||||||
| }); | }); | ||||||
|  | 
 | ||||||
|  | test("Increase patch when previous version shares HEAD with other releases", (t) => { | ||||||
|  |   t.is( | ||||||
|  |     getNextVersion({ | ||||||
|  |       branch: { | ||||||
|  |         name: "alpha", | ||||||
|  |         type: "prerelease", | ||||||
|  |         prerelease: "alpha", | ||||||
|  |         tags: [ | ||||||
|  |           { gitTag: "v1.0.0-beta.1", version: "1.0.0-beta.1", channels: ["beta"] }, | ||||||
|  |           { gitTag: "v1.0.0-beta.2", version: "1.0.0-beta.2", channels: ["alpha", "beta"] }, | ||||||
|  |           { gitTag: "v1.0.0-alpha.1", version: "1.0.0-alpha.1", channels: ["alpha", "beta"] }, | ||||||
|  |         ], | ||||||
|  |       }, | ||||||
|  |       nextRelease: { type: "patch", channel: "alpha" }, | ||||||
|  |       lastRelease: { version: "v1.0.0-alpha.1", channels: ["alpha", "beta"] }, | ||||||
|  |       logger: t.context.logger, | ||||||
|  |     }), | ||||||
|  |     "1.0.0-alpha.2" | ||||||
|  |   ); | ||||||
|  | }); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user