Skip to content

Commit 62b348e

Browse files
KillianHmydantongolub
KillianHmyd
authored andcommittedJan 22, 2021
fix(update-deps): properly resolve next pre-versions
1 parent 702a540 commit 62b348e

File tree

3 files changed

+29
-11
lines changed

3 files changed

+29
-11
lines changed
 

‎lib/git.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const execa = require("execa");
55
*
66
* @param {String} branch The branch for which to retrieve the tags.
77
* @param {Object} [execaOptions] Options to pass to `execa`.
8-
* @param {Array<String>} filters List of prefixes/sufixes to be checked inside tags.
8+
* @param {Array<String>} filters List of string to be checked inside tags.
99
*
1010
* @return {Array<String>} List of git tags.
1111
* @throws {Error} If the `git` command fails.
@@ -20,7 +20,7 @@ function getTags(branch, execaOptions, filters) {
2020

2121
if (!filters || !filters.length) return tags;
2222

23-
const validateSubstr = (t, f) => !!f.find((v) => t.includes(v));
23+
const validateSubstr = (t, f) => f.every((v) => t.includes(v));
2424

2525
return tags.filter((tag) => validateSubstr(tag, filters));
2626
}

‎lib/updateDeps.js

+23-6
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@ const getNextVersion = (pkg) => {
2222
: lastVersion || "1.0.0";
2323
};
2424

25+
/**
26+
* Resolve the package version from a tag
27+
*
28+
* @param {Package} pkg Package object.
29+
* @param {string} tag The tag containing the version to resolve
30+
* @returns {string} The version of the package
31+
* @internal
32+
*/
33+
const getVersionFromTag = (pkg, tag) => (pkg.name ? tag.replace(`${pkg.name}@`, "") : tag);
34+
2535
/**
2636
* Resolve next package version on prereleases.
2737
*
@@ -38,20 +48,27 @@ const getNextPreVersion = (pkg, tags) => {
3848
// Extract tags:
3949
// 1. Set filter to extract only package tags
4050
// 2. Get tags from a branch considering the filters established
51+
// 3. Resolve the versions from the tags
4152
// TODO: replace {cwd: '.'} with multiContext.cwd
4253
if (pkg.name) tagFilters.push(pkg.name);
4354
if (!tags || !tags.length) {
44-
tags = getTags(pkg._branch, { cwd: "." }, tagFilters).map((tag) =>
45-
pkg.name ? tag.replace(`${pkg.name}@`, "") : tag
46-
);
55+
tags = getTags(pkg._branch, { cwd: "." }, tagFilters);
4756
}
4857

4958
const lastPreRelTag = getPreReleaseTag(lastVersion);
5059
const isNewPreRelTag = lastPreRelTag && lastPreRelTag !== pkg._preRelease;
5160

52-
return isNewPreRelTag || !lastVersion
53-
? `1.0.0-${pkg._preRelease}.1`
54-
: _nextPreVersionCases(tags, lastVersion, pkg._nextType, pkg._preRelease);
61+
const versionToSet =
62+
isNewPreRelTag || !lastVersion
63+
? `1.0.0-${pkg._preRelease}.1`
64+
: _nextPreVersionCases(
65+
tags.map((tag) => getVersionFromTag(pkg, tag)),
66+
lastVersion,
67+
pkg._nextType,
68+
pkg._preRelease
69+
);
70+
71+
return versionToSet;
5572
};
5673

5774
/**

‎test/lib/updateDeps.test.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,8 @@ describe("getNextPreVersion()", () => {
179179
[null, "patch", "rc", [], "1.0.0-rc.1"],
180180
["1.0.0-rc.0", "minor", "dev", [], "1.0.0-dev.1"],
181181
["1.0.0-dev.0", "major", "dev", [], "1.0.0-dev.1"],
182-
["1.0.0-dev.0", "major", "dev", ["1.0.0-dev.1"], "1.0.0-dev.2"],
183-
["1.0.0-dev.0", "major", "dev", ["1.0.0-dev.1", "1.0.1-dev.0"], "1.0.1-dev.1"],
182+
["1.0.0-dev.0", "major", "dev", ["testing-package@1.0.0-dev.1"], "1.0.0-dev.2"],
183+
["1.0.0-dev.0", "major", "dev", ["testing-package@1.0.0-dev.1", "1.0.1-dev.0"], "1.0.1-dev.1"],
184184
["11.0.0", "major", "beta", [], "12.0.0-beta.1"],
185185
["1.0.0", "minor", "beta", [], "1.1.0-beta.1"],
186186
["1.0.0", "patch", "beta", [], "1.0.1-beta.1"],
@@ -196,7 +196,8 @@ describe("getNextPreVersion()", () => {
196196
_nextType: releaseType,
197197
_lastRelease: {version: lastVersion},
198198
_preRelease: preRelease,
199-
_branch: "master",
199+
_branch: "master",
200+
name: "testing-package"
200201
},
201202
lastTags
202203
)).toBe(nextVersion);

0 commit comments

Comments
 (0)
Please sign in to comment.