@@ -2,11 +2,15 @@ var tap = require('tap');
22var test = tap . test ;
33var semver = require ( '../semver.js' ) ;
44var coerce = semver . coerce ;
5+ var valid = semver . valid ;
56
6- test ( '\ncoerce tests' , function ( t ) {
7- var tooLong = '123' + '.1' . repeat ( 127 ) ;
8- var justRight = '12' + '.1' . repeat ( 127 ) ;
7+ function r ( text ) {
8+ return function ( count ) {
9+ return text . repeat ( count ) ;
10+ } ;
11+ }
912
13+ test ( '\ncoerce tests' , function ( t ) {
1014 // Expected to be null (cannot be coerced).
1115 [
1216 null ,
@@ -15,13 +19,22 @@ test('\ncoerce tests', function(t) {
1519 '' ,
1620 '.' ,
1721 'version one' ,
18- tooLong
22+ r ( '9' ) ( 16 ) ,
23+ r ( '1' ) ( 17 ) ,
24+ 'a' + r ( '9' ) ( 16 ) ,
25+ 'a' + r ( '1' ) ( 17 ) ,
26+ r ( '9' ) ( 16 ) + 'a' ,
27+ r ( '1' ) ( 17 ) + 'a' ,
28+ r ( '9' ) ( 16 ) + '.4.7.4' ,
29+ r ( '9' ) ( 16 ) + '.' + r ( '2' ) ( 16 ) + '.' + r ( '3' ) ( 16 ) ,
30+ r ( '1' ) ( 16 ) + '.' + r ( '9' ) ( 16 ) + '.' + r ( '3' ) ( 16 ) ,
31+ r ( '1' ) ( 16 ) + '.' + r ( '2' ) ( 16 ) + '.' + r ( '9' ) ( 16 )
1932 ] . forEach ( function ( input ) {
2033 var msg = 'coerce(' + input + ') should be null'
2134 t . same ( coerce ( input ) , null , msg )
2235 } ) ;
2336
24- // Expected to be the same .
37+ // Expected to be the valid .
2538 [
2639 [ semver . parse ( '1.2.3' ) , '1.2.3' ] ,
2740 [ '.1' , '1.0.0' ] ,
@@ -49,6 +62,8 @@ test('\ncoerce tests', function(t) {
4962 [ 'v1.2' , '1.2.0' ] ,
5063 [ 'v1.2.3' , '1.2.3' ] ,
5164 [ 'v1.2.3.4' , '1.2.3' ] ,
65+ [ ' 1' , '1.0.0' ] ,
66+ [ '1 ' , '1.0.0' ] ,
5267 [ '1 0' , '1.0.0' ] ,
5368 [ '1 1' , '1.0.0' ] ,
5469 [ '1.1 1' , '1.1.0' ] ,
@@ -65,13 +80,39 @@ test('\ncoerce tests', function(t) {
6580 [ 'v2' , '2.0.0' ] ,
6681 [ 'v3.4 replaces v3.3.1' , '3.4.0' ] ,
6782 [ '4.6.3.9.2-alpha2' , '4.6.3' ] ,
68- [ justRight , '12.1.1' ]
83+ [ r ( '1' ) ( 17 ) + '.2' , '2.0.0' ] ,
84+ [ r ( '1' ) ( 17 ) + '.2.3' , '2.3.0' ] ,
85+ [ '1.' + r ( '2' ) ( 17 ) + '.3' , '1.0.0' ] ,
86+ [ '1.2.' + r ( '3' ) ( 17 ) , '1.2.0' ] ,
87+ [ r ( '1' ) ( 17 ) + '.2.3.4' , '2.3.4' ] ,
88+ [ '1.' + r ( '2' ) ( 17 ) + '.3.4' , '1.0.0' ] ,
89+ [ '1.2.' + r ( '3' ) ( 17 ) + '.4' , '1.2.0' ] ,
90+ [ r ( '1' ) ( 17 ) + '.' + r ( '2' ) ( 16 ) + '.' + r ( '3' ) ( 16 ) ,
91+ r ( '2' ) ( 16 ) + '.' + r ( '3' ) ( 16 ) + '.0' ] ,
92+ [ r ( '1' ) ( 16 ) + '.' + r ( '2' ) ( 17 ) + '.' + r ( '3' ) ( 16 ) ,
93+ r ( '1' ) ( 16 ) + '.0.0' ] ,
94+ [ r ( '1' ) ( 16 ) + '.' + r ( '2' ) ( 16 ) + '.' + r ( '3' ) ( 17 ) ,
95+ r ( '1' ) ( 16 ) + '.' + r ( '2' ) ( 16 ) + '.0' ] ,
96+ [ '11' + r ( '.1' ) ( 126 ) , '11.1.1' ] ,
97+ [ r ( '1' ) ( 16 ) , r ( '1' ) ( 16 ) + '.0.0' ] ,
98+ [ 'a' + r ( '1' ) ( 16 ) , r ( '1' ) ( 16 ) + '.0.0' ] ,
99+ [ r ( '1' ) ( 16 ) + '.2.3.4' , r ( '1' ) ( 16 ) + '.2.3' ] ,
100+ [ '1.' + r ( '2' ) ( 16 ) + '.3.4' , '1.' + r ( '2' ) ( 16 ) + '.3' ] ,
101+ [ '1.2.' + r ( '3' ) ( 16 ) + '.4' , '1.2.' + r ( '3' ) ( 16 ) ] ,
102+ [ r ( '1' ) ( 16 ) + '.' + r ( '2' ) ( 16 ) + '.' + r ( '3' ) ( 16 ) ,
103+ r ( '1' ) ( 16 ) + '.' + r ( '2' ) ( 16 ) + '.' + r ( '3' ) ( 16 ) ] ,
104+ [ '1.2.3.' + r ( '4' ) ( 252 ) + '.5' , '1.2.3' ] ,
105+ [ '1.2.3.' + r ( '4' ) ( 1024 ) , '1.2.3' ] ,
106+ [ r ( '1' ) ( 17 ) + '.4.7.4' , '4.7.4' ]
69107 ] . forEach ( function ( tuple ) {
70108 var input = tuple [ 0 ]
71109 var expected = tuple [ 1 ]
72110 var msg = 'coerce(' + input + ') should become ' + expected
73111 t . same ( ( coerce ( input ) || { } ) . version , expected , msg )
74112 } ) ;
75113
114+ t . same ( valid ( coerce ( '42.6.7.9.3-alpha' ) ) , '42.6.7' )
115+ t . same ( valid ( coerce ( 'v2' ) ) , '2.0.0' )
116+
76117 t . done ( ) ;
77- } ) ;
118+ } ) ;
0 commit comments