@@ -2,11 +2,15 @@ var tap = require('tap');
2
2
var test = tap . test ;
3
3
var semver = require ( '../semver.js' ) ;
4
4
var coerce = semver . coerce ;
5
+ var valid = semver . valid ;
5
6
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
+ }
9
12
13
+ test ( '\ncoerce tests' , function ( t ) {
10
14
// Expected to be null (cannot be coerced).
11
15
[
12
16
null ,
@@ -15,13 +19,22 @@ test('\ncoerce tests', function(t) {
15
19
'' ,
16
20
'.' ,
17
21
'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 )
19
32
] . forEach ( function ( input ) {
20
33
var msg = 'coerce(' + input + ') should be null'
21
34
t . same ( coerce ( input ) , null , msg )
22
35
} ) ;
23
36
24
- // Expected to be the same .
37
+ // Expected to be the valid .
25
38
[
26
39
[ semver . parse ( '1.2.3' ) , '1.2.3' ] ,
27
40
[ '.1' , '1.0.0' ] ,
@@ -49,6 +62,8 @@ test('\ncoerce tests', function(t) {
49
62
[ 'v1.2' , '1.2.0' ] ,
50
63
[ 'v1.2.3' , '1.2.3' ] ,
51
64
[ 'v1.2.3.4' , '1.2.3' ] ,
65
+ [ ' 1' , '1.0.0' ] ,
66
+ [ '1 ' , '1.0.0' ] ,
52
67
[ '1 0' , '1.0.0' ] ,
53
68
[ '1 1' , '1.0.0' ] ,
54
69
[ '1.1 1' , '1.1.0' ] ,
@@ -65,13 +80,39 @@ test('\ncoerce tests', function(t) {
65
80
[ 'v2' , '2.0.0' ] ,
66
81
[ 'v3.4 replaces v3.3.1' , '3.4.0' ] ,
67
82
[ '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' ]
69
107
] . forEach ( function ( tuple ) {
70
108
var input = tuple [ 0 ]
71
109
var expected = tuple [ 1 ]
72
110
var msg = 'coerce(' + input + ') should become ' + expected
73
111
t . same ( ( coerce ( input ) || { } ) . version , expected , msg )
74
112
} ) ;
75
113
114
+ t . same ( valid ( coerce ( '42.6.7.9.3-alpha' ) ) , '42.6.7' )
115
+ t . same ( valid ( coerce ( 'v2' ) ) , '2.0.0' )
116
+
76
117
t . done ( ) ;
77
- } ) ;
118
+ } ) ;
0 commit comments