@@ -110,13 +110,47 @@ test('coerce tests', (t) => {
110110 [ '1.2.3/6' , '6.0.0' , { rtl : true } ] ,
111111 [ '1.2.3.4' , '2.3.4' , { rtl : true } ] ,
112112 [ '1.2.3.4xyz' , '2.3.4' , { rtl : true } ] ,
113+
114+ [ '1-rc.5' , '1.0.0-rc.5' , { includePrerelease : true } ] ,
115+ [ '1.2-rc.5' , '1.2.0-rc.5' , { includePrerelease : true } ] ,
116+ [ '1.2.3-rc.5' , '1.2.3-rc.5' , { includePrerelease : true } ] ,
117+ [ '1.2.3-rc.5/a' , '1.2.3-rc.5' , { includePrerelease : true } ] ,
118+ [ '1.2.3.4-rc.5' , '1.2.3' , { includePrerelease : true } ] ,
119+ [ '1.2.3.4+rev.6' , '1.2.3' , { includePrerelease : true } ] ,
120+
121+ [ '1+rev.6' , '1.0.0+rev.6' , { includePrerelease : true } ] ,
122+ [ '1.2+rev.6' , '1.2.0+rev.6' , { includePrerelease : true } ] ,
123+ [ '1.2.3+rev.6' , '1.2.3+rev.6' , { includePrerelease : true } ] ,
124+ [ '1.2.3+rev.6/a' , '1.2.3+rev.6' , { includePrerelease : true } ] ,
125+ [ '1.2.3.4-rc.5' , '1.2.3' , { includePrerelease : true } ] ,
126+ [ '1.2.3.4+rev.6' , '1.2.3' , { includePrerelease : true } ] ,
127+
128+ [ '1-rc.5+rev.6' , '1.0.0-rc.5+rev.6' , { includePrerelease : true } ] ,
129+ [ '1.2-rc.5+rev.6' , '1.2.0-rc.5+rev.6' , { includePrerelease : true } ] ,
130+ [ '1.2.3-rc.5+rev.6' , '1.2.3-rc.5+rev.6' , { includePrerelease : true } ] ,
131+ [ '1.2.3-rc.5+rev.6/a' , '1.2.3-rc.5+rev.6' , { includePrerelease : true } ] ,
132+
133+ [ '1.2-rc.5+rev.6' , '1.2.0-rc.5+rev.6' , { rtl : true , includePrerelease : true } ] ,
134+ [ '1.2.3-rc.5+rev.6' , '1.2.3-rc.5+rev.6' , { rtl : true , includePrerelease : true } ] ,
135+ [ '1.2.3.4-rc.5+rev.6' , '2.3.4-rc.5+rev.6' , { rtl : true , includePrerelease : true } ] ,
136+ [ '1.2.3.4-rc.5' , '2.3.4-rc.5' , { rtl : true , includePrerelease : true } ] ,
137+ [ '1.2.3.4+rev.6' , '2.3.4+rev.6' , { rtl : true , includePrerelease : true } ] ,
138+ [ '1.2.3.4-rc.5+rev.6/7' , '7.0.0' , { rtl : true , includePrerelease : true } ] ,
139+ [ '1.2.3.4-rc/7.5+rev.6' , '7.5.0+rev.6' , { rtl : true , includePrerelease : true } ] ,
140+ [ '1.2.3.4/7-rc.5+rev.6' , '7.0.0-rc.5+rev.6' , { rtl : true , includePrerelease : true } ] ,
113141 ]
114142 coerceToValid . forEach ( ( [ input , expected , options ] ) => {
115- const msg = `coerce(${ input } ) should become ${ expected } `
116- t . same ( ( coerce ( input , options ) || { } ) . version , expected , msg )
143+ const coerceExpression = `coerce(${ input } , ${ JSON . stringify ( options ) } )`
144+ const coercedVersion = coerce ( input , options ) || { }
145+ const expectedVersion = parse ( expected )
146+ t . equal ( expectedVersion . compare ( coercedVersion ) , 0 ,
147+ `${ coerceExpression } should be equal to ${ expectedVersion } ` )
148+ t . equal ( expectedVersion . compareBuild ( coercedVersion ) , 0 ,
149+ `${ coerceExpression } build should be equal to ${ expectedVersion } ` )
117150 } )
118151
119152 t . same ( valid ( coerce ( '42.6.7.9.3-alpha' ) ) , '42.6.7' )
153+ t . same ( valid ( coerce ( '42.6.7-alpha+rev.1' , { includePrerelease : true } ) ) , '42.6.7-alpha' )
120154 t . same ( valid ( coerce ( 'v2' ) ) , '2.0.0' )
121155
122156 t . end ( )
0 commit comments