Skip to content

Commit e7f1646

Browse files
davikawasakiantongolub
authored andcommitted
fix: getVersionFromTag tests to fix release process
1 parent 576fe27 commit e7f1646

File tree

2 files changed

+44
-2
lines changed

2 files changed

+44
-2
lines changed

lib/updateDeps.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,16 @@ const getNextVersion = (pkg) => {
2727
*
2828
* @param {Package} pkg Package object.
2929
* @param {string} tag The tag containing the version to resolve
30-
* @returns {string} The version of the package
30+
* @returns {string|null} The version of the package or null if no tag was passed
3131
* @internal
3232
*/
33-
const getVersionFromTag = (pkg, tag) => (pkg.name ? tag.replace(`${pkg.name}@`, "") : tag);
33+
const getVersionFromTag = (pkg, tag) => {
34+
if (!pkg.name) return tag || null;
35+
if (!tag) return null;
36+
37+
const strMatch = tag.match(/[0-9].[0-9].[0-9].*/);
38+
return strMatch && strMatch[0] && semver.valid(strMatch[0]) ? strMatch[0] : null;
39+
};
3440

3541
/**
3642
* Resolve next package version on prereleases.
@@ -328,4 +334,5 @@ module.exports = {
328334
updateManifestDeps,
329335
resolveReleaseType,
330336
resolveNextVersion,
337+
getVersionFromTag,
331338
};

test/lib/updateDeps.test.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const {
44
getNextVersion,
55
getNextPreVersion,
66
getPreReleaseTag,
7+
getVersionFromTag,
78
} = require("../../lib/updateDeps");
89

910
describe("resolveNextVersion()", () => {
@@ -227,3 +228,37 @@ describe("getPreReleaseTag()", () => {
227228
});
228229
});
229230
});
231+
232+
describe("getVersionFromTag()", () => {
233+
// prettier-ignore
234+
const cases = [
235+
[{}, undefined, null],
236+
[{ name: undefined }, undefined, null],
237+
[{}, null, null],
238+
[{ name: null }, null, null],
239+
[{ name: undefined }, '1.0.0', '1.0.0'],
240+
[{ name: null }, '1.0.0', '1.0.0'],
241+
[{ name: 'abc' }, undefined, null],
242+
[{ name: 'abc' }, null, null],
243+
[{ name: 'abc' }, '1.0.0', '1.0.0'],
244+
[{ name: 'dev' }, '1.0.0-dev.1', '1.0.0-dev.1'],
245+
[{ name: 'app' }, 'app@1.0.0-dev.1', '1.0.0-dev.1'],
246+
[{ name: 'app' }, 'app@1.0.0-devapp@.1', null],
247+
[{ name: 'msr-test-a' }, 'msr-test-a@1.0.0-rc.1', '1.0.0-rc.1'],
248+
[{ name: 'msr.test.a' }, 'msr.test.a@1.0.0', '1.0.0'],
249+
[{ name: 'msr_test_a' }, 'msr_test_a@1.0.0', '1.0.0'],
250+
[{ name: 'msr@test@a' }, 'msr@test@a@1.0.0', '1.0.0'],
251+
[{ name: 'abc' }, 'a.b.c-rc.0', null],
252+
[{ name: 'abc' }, '1-rc.0', null],
253+
[{ name: 'abc' }, '1.0.x-rc.0', null],
254+
[{ name: 'abc' }, '1.x.0-rc.0', null],
255+
[{ name: 'abc' }, 'x.1.0-rc.0', null],
256+
]
257+
258+
cases.forEach(([pkg, tag, versionFromTag]) => {
259+
it(`${JSON.stringify(pkg)} pkg with tag ${tag} gives ${versionFromTag}`, () => {
260+
// prettier-ignore
261+
expect(getVersionFromTag(pkg, tag)).toBe(versionFromTag);
262+
});
263+
});
264+
});

0 commit comments

Comments
 (0)