Skip to content

Commit 6d71a1b

Browse files
versions-test: add support for experimental pre-releases (#3160)
1 parent fd3ab05 commit 6d71a1b

File tree

1 file changed

+29
-18
lines changed

1 file changed

+29
-18
lines changed

src/__tests__/version-test.ts

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,6 @@ import { describe, it } from 'mocha';
44
import { version, versionInfo } from '../version';
55

66
describe('Version', () => {
7-
it('version', () => {
8-
expect(version).to.be.a('string');
9-
expect(version).to.match(
10-
/^\d+\.\d+\.\d(-(alpha|beta|rc|(experimental-[\w-]+))\.\d+)?$/,
11-
);
12-
});
13-
147
it('versionInfo', () => {
158
expect(versionInfo).to.be.an('object');
169
expect(versionInfo).to.have.all.keys(
@@ -21,20 +14,38 @@ describe('Version', () => {
2114
);
2215

2316
const { major, minor, patch, preReleaseTag } = versionInfo;
24-
25-
expect(major).to.be.a('number');
26-
expect(minor).to.be.a('number');
27-
expect(patch).to.be.a('number');
17+
expect(major).to.be.a('number').at.least(0);
18+
expect(minor).to.be.a('number').at.least(0);
19+
expect(patch).to.be.a('number').at.least(0);
2820

2921
// istanbul ignore next (Can't be verified on all versions)
30-
if (preReleaseTag !== null) {
31-
expect(preReleaseTag).to.be.a('string');
22+
switch (preReleaseTag?.split('.').length) {
23+
case null:
24+
break;
25+
case 2:
26+
expect(preReleaseTag).to.match(
27+
/^(alpha|beta|rc|experimental-[\w-]+)\.\d+/,
28+
);
29+
break;
30+
case 4:
31+
expect(preReleaseTag).to.match(
32+
/^(alpha|beta|rc)\.\d+.experimental-[\w-]+\.\d+/,
33+
);
34+
break;
35+
default:
36+
expect.fail('Invalid pre-release tag: ' + preReleaseTag);
3237
}
38+
});
39+
40+
it('version', () => {
41+
expect(version).to.be.a('string');
3342

34-
expect(
35-
`${major}.${minor}.${patch}` +
36-
// istanbul ignore next (Can't be verified on all versions)
37-
(preReleaseTag !== null ? '-' + preReleaseTag : ''),
38-
).to.equal(version);
43+
const { major, minor, patch, preReleaseTag } = versionInfo;
44+
expect(version).to.equal(
45+
// istanbul ignore next (Can't be verified on all versions)
46+
preReleaseTag === null
47+
? `${major}.${minor}.${patch}`
48+
: `${major}.${minor}.${patch}-${preReleaseTag}`,
49+
);
3950
});
4051
});

0 commit comments

Comments
 (0)