@@ -4,13 +4,6 @@ import { describe, it } from 'mocha';
44import { version , versionInfo } from '../version' ;
55
66describe ( 'Version' , ( ) => {
7- it ( 'version' , ( ) => {
8- expect ( version ) . to . be . a ( 'string' ) ;
9- expect ( version ) . to . match (
10- / ^ \d + \. \d + \. \d ( - ( a l p h a | b e t a | r c | ( e x p e r i m e n t a l - [ \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+ / ^ ( a l p h a | b e t a | r c | e x p e r i m e n t a l - [ \w - ] + ) \. \d + / ,
28+ ) ;
29+ break ;
30+ case 4 :
31+ expect ( preReleaseTag ) . to . match (
32+ / ^ ( a l p h a | b e t a | r c ) \. \d + .e x p e r i m e n t a l - [ \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