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