Skip to content

Commit

Permalink
fix(conventional-commits): fix semver prerelease bump
Browse files Browse the repository at this point in the history
  • Loading branch information
erquhart committed Mar 21, 2019
1 parent 2ba19b5 commit 72f922a
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 1 deletion.
50 changes: 50 additions & 0 deletions core/conventional-commits/__tests__/conventional-commits.test.js
Expand Up @@ -234,6 +234,56 @@ describe("conventional-commits", () => {

expect.hasAssertions();
});

describe("prerelease bumps", () => {
let cwd;
let pkg;
let opts;
let recommend;

beforeEach(async () => {
let value = 0;
cwd = await initFixture("independent");
[pkg] = await getPackages(cwd);
opts = { changelogPreset: "angular" };
recommend = async (commitMessage, { initVersion } = {}) => {
if (initVersion) {
await pkg.set("version", initVersion).serialize();
await gitAdd(cwd, pkg.manifestLocation);
await gitCommit(cwd, commitMessage);
}
await pkg.set("changed", (value += 1)).serialize();
await gitAdd(cwd, pkg.manifestLocation);
await gitCommit(cwd, commitMessage);
return recommendVersion(pkg, "independent", Object.assign(opts, { prereleaseId: "beta" }));
};
});

it("stable + fix/minor/major => prepatch/preminor/premajor", async () => {
// default initial version is "1.0.0"
expect(await recommend("fix: changed")).toBe("1.0.1-beta.0");
expect(await recommend("feat: changed")).toBe("1.1.0-beta.0");
expect(await recommend("feat: changed\n\nBREAKING CHANGE: changed")).toBe("2.0.0-beta.0");
});

it("prepatch + fix/minor/major => prerelease/preminor/premajor", async () => {
expect(await recommend("fix: changed", { initVersion: "1.0.1-beta.0" })).toBe("1.0.1-beta.1");
expect(await recommend("feat: changed")).toBe("1.1.0-beta.0");
expect(await recommend("feat: changed\n\nBREAKING CHANGE: changed")).toBe("2.0.0-beta.0");
});

it("preminor + fix/minor/major => prerelease/prerelease/premajor", async () => {
expect(await recommend("fix: changed", { initVersion: "1.1.0-beta.0" })).toBe("1.1.0-beta.1");
expect(await recommend("feat: changed")).toBe("1.1.0-beta.1");
expect(await recommend("feat: changed\n\nBREAKING CHANGE: changed")).toBe("2.0.0-beta.0");
});

it("premajor + fix/minor/major => prerelease", async () => {
expect(await recommend("fix: changed", { initVersion: "2.0.0-beta.0" })).toBe("2.0.0-beta.1");
expect(await recommend("feat: changed")).toBe("2.0.0-beta.1");
expect(await recommend("feat: changed\n\nBREAKING CHANGE: changed")).toBe("2.0.0-beta.1");
});
});
});

describe("updateChangelog()", () => {
Expand Down
2 changes: 1 addition & 1 deletion core/conventional-commits/lib/recommend-version.js
Expand Up @@ -27,7 +27,7 @@ function recommendVersion(pkg, type, { changelogPreset, rootPath, tagPrefix, pre
}
switch (releaseType) {
case "major":
return semver.minor(version) !== 0;
return semver.minor(version) !== 0 || semver.patch(version) !== 0;
case "minor":
return semver.patch(version) !== 0;
default:
Expand Down

0 comments on commit 72f922a

Please sign in to comment.