semver 5.0.3 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/test/index.js DELETED
@@ -1,698 +0,0 @@
1
- 'use strict';
2
-
3
- var tap = require('tap');
4
- var test = tap.test;
5
- var semver = require('../semver.js');
6
- var eq = semver.eq;
7
- var gt = semver.gt;
8
- var lt = semver.lt;
9
- var neq = semver.neq;
10
- var cmp = semver.cmp;
11
- var gte = semver.gte;
12
- var lte = semver.lte;
13
- var satisfies = semver.satisfies;
14
- var validRange = semver.validRange;
15
- var inc = semver.inc;
16
- var diff = semver.diff;
17
- var replaceStars = semver.replaceStars;
18
- var toComparators = semver.toComparators;
19
- var SemVer = semver.SemVer;
20
- var Range = semver.Range;
21
-
22
- test('\ncomparison tests', function(t) {
23
- // [version1, version2]
24
- // version1 should be greater than version2
25
- [['0.0.0', '0.0.0-foo'],
26
- ['0.0.1', '0.0.0'],
27
- ['1.0.0', '0.9.9'],
28
- ['0.10.0', '0.9.0'],
29
- ['0.99.0', '0.10.0'],
30
- ['2.0.0', '1.2.3'],
31
- ['v0.0.0', '0.0.0-foo', true],
32
- ['v0.0.1', '0.0.0', true],
33
- ['v1.0.0', '0.9.9', true],
34
- ['v0.10.0', '0.9.0', true],
35
- ['v0.99.0', '0.10.0', true],
36
- ['v2.0.0', '1.2.3', true],
37
- ['0.0.0', 'v0.0.0-foo', true],
38
- ['0.0.1', 'v0.0.0', true],
39
- ['1.0.0', 'v0.9.9', true],
40
- ['0.10.0', 'v0.9.0', true],
41
- ['0.99.0', 'v0.10.0', true],
42
- ['2.0.0', 'v1.2.3', true],
43
- ['1.2.3', '1.2.3-asdf'],
44
- ['1.2.3', '1.2.3-4'],
45
- ['1.2.3', '1.2.3-4-foo'],
46
- ['1.2.3-5-foo', '1.2.3-5'],
47
- ['1.2.3-5', '1.2.3-4'],
48
- ['1.2.3-5-foo', '1.2.3-5-Foo'],
49
- ['3.0.0', '2.7.2+asdf'],
50
- ['1.2.3-a.10', '1.2.3-a.5'],
51
- ['1.2.3-a.b', '1.2.3-a.5'],
52
- ['1.2.3-a.b', '1.2.3-a'],
53
- ['1.2.3-a.b.c.10.d.5', '1.2.3-a.b.c.5.d.100'],
54
- ['1.2.3-r2', '1.2.3-r100'],
55
- ['1.2.3-r100', '1.2.3-R2']
56
- ].forEach(function(v) {
57
- var v0 = v[0];
58
- var v1 = v[1];
59
- var loose = v[2];
60
- t.ok(gt(v0, v1, loose), "gt('" + v0 + "', '" + v1 + "')");
61
- t.ok(lt(v1, v0, loose), "lt('" + v1 + "', '" + v0 + "')");
62
- t.ok(!gt(v1, v0, loose), "!gt('" + v1 + "', '" + v0 + "')");
63
- t.ok(!lt(v0, v1, loose), "!lt('" + v0 + "', '" + v1 + "')");
64
- t.ok(eq(v0, v0, loose), "eq('" + v0 + "', '" + v0 + "')");
65
- t.ok(eq(v1, v1, loose), "eq('" + v1 + "', '" + v1 + "')");
66
- t.ok(neq(v0, v1, loose), "neq('" + v0 + "', '" + v1 + "')");
67
- t.ok(cmp(v1, '==', v1, loose), "cmp('" + v1 + "' == '" + v1 + "')");
68
- t.ok(cmp(v0, '>=', v1, loose), "cmp('" + v0 + "' >= '" + v1 + "')");
69
- t.ok(cmp(v1, '<=', v0, loose), "cmp('" + v1 + "' <= '" + v0 + "')");
70
- t.ok(cmp(v0, '!=', v1, loose), "cmp('" + v0 + "' != '" + v1 + "')");
71
- });
72
- t.end();
73
- });
74
-
75
- test('\nequality tests', function(t) {
76
- // [version1, version2]
77
- // version1 should be equivalent to version2
78
- [['1.2.3', 'v1.2.3', true],
79
- ['1.2.3', '=1.2.3', true],
80
- ['1.2.3', 'v 1.2.3', true],
81
- ['1.2.3', '= 1.2.3', true],
82
- ['1.2.3', ' v1.2.3', true],
83
- ['1.2.3', ' =1.2.3', true],
84
- ['1.2.3', ' v 1.2.3', true],
85
- ['1.2.3', ' = 1.2.3', true],
86
- ['1.2.3-0', 'v1.2.3-0', true],
87
- ['1.2.3-0', '=1.2.3-0', true],
88
- ['1.2.3-0', 'v 1.2.3-0', true],
89
- ['1.2.3-0', '= 1.2.3-0', true],
90
- ['1.2.3-0', ' v1.2.3-0', true],
91
- ['1.2.3-0', ' =1.2.3-0', true],
92
- ['1.2.3-0', ' v 1.2.3-0', true],
93
- ['1.2.3-0', ' = 1.2.3-0', true],
94
- ['1.2.3-1', 'v1.2.3-1', true],
95
- ['1.2.3-1', '=1.2.3-1', true],
96
- ['1.2.3-1', 'v 1.2.3-1', true],
97
- ['1.2.3-1', '= 1.2.3-1', true],
98
- ['1.2.3-1', ' v1.2.3-1', true],
99
- ['1.2.3-1', ' =1.2.3-1', true],
100
- ['1.2.3-1', ' v 1.2.3-1', true],
101
- ['1.2.3-1', ' = 1.2.3-1', true],
102
- ['1.2.3-beta', 'v1.2.3-beta', true],
103
- ['1.2.3-beta', '=1.2.3-beta', true],
104
- ['1.2.3-beta', 'v 1.2.3-beta', true],
105
- ['1.2.3-beta', '= 1.2.3-beta', true],
106
- ['1.2.3-beta', ' v1.2.3-beta', true],
107
- ['1.2.3-beta', ' =1.2.3-beta', true],
108
- ['1.2.3-beta', ' v 1.2.3-beta', true],
109
- ['1.2.3-beta', ' = 1.2.3-beta', true],
110
- ['1.2.3-beta+build', ' = 1.2.3-beta+otherbuild', true],
111
- ['1.2.3+build', ' = 1.2.3+otherbuild', true],
112
- ['1.2.3-beta+build', '1.2.3-beta+otherbuild'],
113
- ['1.2.3+build', '1.2.3+otherbuild'],
114
- [' v1.2.3+build', '1.2.3+otherbuild']
115
- ].forEach(function(v) {
116
- var v0 = v[0];
117
- var v1 = v[1];
118
- var loose = v[2];
119
- t.ok(eq(v0, v1, loose), "eq('" + v0 + "', '" + v1 + "')");
120
- t.ok(!neq(v0, v1, loose), "!neq('" + v0 + "', '" + v1 + "')");
121
- t.ok(cmp(v0, '==', v1, loose), 'cmp(' + v0 + '==' + v1 + ')');
122
- t.ok(!cmp(v0, '!=', v1, loose), '!cmp(' + v0 + '!=' + v1 + ')');
123
- t.ok(!cmp(v0, '===', v1, loose), '!cmp(' + v0 + '===' + v1 + ')');
124
- t.ok(cmp(v0, '!==', v1, loose), 'cmp(' + v0 + '!==' + v1 + ')');
125
- t.ok(!gt(v0, v1, loose), "!gt('" + v0 + "', '" + v1 + "')");
126
- t.ok(gte(v0, v1, loose), "gte('" + v0 + "', '" + v1 + "')");
127
- t.ok(!lt(v0, v1, loose), "!lt('" + v0 + "', '" + v1 + "')");
128
- t.ok(lte(v0, v1, loose), "lte('" + v0 + "', '" + v1 + "')");
129
- });
130
- t.end();
131
- });
132
-
133
-
134
- test('\nrange tests', function(t) {
135
- // [range, version]
136
- // version should be included by range
137
- [['1.0.0 - 2.0.0', '1.2.3'],
138
- ['^1.2.3+build', '1.2.3'],
139
- ['^1.2.3+build', '1.3.0'],
140
- ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3'],
141
- ['1.2.3pre+asdf - 2.4.3-pre+asdf', '1.2.3', true],
142
- ['1.2.3-pre+asdf - 2.4.3pre+asdf', '1.2.3', true],
143
- ['1.2.3pre+asdf - 2.4.3pre+asdf', '1.2.3', true],
144
- ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '1.2.3-pre.2'],
145
- ['1.2.3-pre+asdf - 2.4.3-pre+asdf', '2.4.3-alpha'],
146
- ['1.2.3+asdf - 2.4.3+asdf', '1.2.3'],
147
- ['1.0.0', '1.0.0'],
148
- ['>=*', '0.2.4'],
149
- ['', '1.0.0'],
150
- ['*', '1.2.3'],
151
- ['*', 'v1.2.3', true],
152
- ['>=1.0.0', '1.0.0'],
153
- ['>=1.0.0', '1.0.1'],
154
- ['>=1.0.0', '1.1.0'],
155
- ['>1.0.0', '1.0.1'],
156
- ['>1.0.0', '1.1.0'],
157
- ['<=2.0.0', '2.0.0'],
158
- ['<=2.0.0', '1.9999.9999'],
159
- ['<=2.0.0', '0.2.9'],
160
- ['<2.0.0', '1.9999.9999'],
161
- ['<2.0.0', '0.2.9'],
162
- ['>= 1.0.0', '1.0.0'],
163
- ['>= 1.0.0', '1.0.1'],
164
- ['>= 1.0.0', '1.1.0'],
165
- ['> 1.0.0', '1.0.1'],
166
- ['> 1.0.0', '1.1.0'],
167
- ['<= 2.0.0', '2.0.0'],
168
- ['<= 2.0.0', '1.9999.9999'],
169
- ['<= 2.0.0', '0.2.9'],
170
- ['< 2.0.0', '1.9999.9999'],
171
- ['<\t2.0.0', '0.2.9'],
172
- ['>=0.1.97', 'v0.1.97', true],
173
- ['>=0.1.97', '0.1.97'],
174
- ['0.1.20 || 1.2.4', '1.2.4'],
175
- ['>=0.2.3 || <0.0.1', '0.0.0'],
176
- ['>=0.2.3 || <0.0.1', '0.2.3'],
177
- ['>=0.2.3 || <0.0.1', '0.2.4'],
178
- ['||', '1.3.4'],
179
- ['2.x.x', '2.1.3'],
180
- ['1.2.x', '1.2.3'],
181
- ['1.2.x || 2.x', '2.1.3'],
182
- ['1.2.x || 2.x', '1.2.3'],
183
- ['x', '1.2.3'],
184
- ['2.*.*', '2.1.3'],
185
- ['1.2.*', '1.2.3'],
186
- ['1.2.* || 2.*', '2.1.3'],
187
- ['1.2.* || 2.*', '1.2.3'],
188
- ['*', '1.2.3'],
189
- ['2', '2.1.2'],
190
- ['2.3', '2.3.1'],
191
- ['~2.4', '2.4.0'], // >=2.4.0 <2.5.0
192
- ['~2.4', '2.4.5'],
193
- ['~>3.2.1', '3.2.2'], // >=3.2.1 <3.3.0,
194
- ['~1', '1.2.3'], // >=1.0.0 <2.0.0
195
- ['~>1', '1.2.3'],
196
- ['~> 1', '1.2.3'],
197
- ['~1.0', '1.0.2'], // >=1.0.0 <1.1.0,
198
- ['~ 1.0', '1.0.2'],
199
- ['~ 1.0.3', '1.0.12'],
200
- ['>=1', '1.0.0'],
201
- ['>= 1', '1.0.0'],
202
- ['<1.2', '1.1.1'],
203
- ['< 1.2', '1.1.1'],
204
- ['~v0.5.4-pre', '0.5.5'],
205
- ['~v0.5.4-pre', '0.5.4'],
206
- ['=0.7.x', '0.7.2'],
207
- ['<=0.7.x', '0.7.2'],
208
- ['>=0.7.x', '0.7.2'],
209
- ['<=0.7.x', '0.6.2'],
210
- ['~1.2.1 >=1.2.3', '1.2.3'],
211
- ['~1.2.1 =1.2.3', '1.2.3'],
212
- ['~1.2.1 1.2.3', '1.2.3'],
213
- ['~1.2.1 >=1.2.3 1.2.3', '1.2.3'],
214
- ['~1.2.1 1.2.3 >=1.2.3', '1.2.3'],
215
- ['~1.2.1 1.2.3', '1.2.3'],
216
- ['>=1.2.1 1.2.3', '1.2.3'],
217
- ['1.2.3 >=1.2.1', '1.2.3'],
218
- ['>=1.2.3 >=1.2.1', '1.2.3'],
219
- ['>=1.2.1 >=1.2.3', '1.2.3'],
220
- ['>=1.2', '1.2.8'],
221
- ['^1.2.3', '1.8.1'],
222
- ['^0.1.2', '0.1.2'],
223
- ['^0.1', '0.1.2'],
224
- ['^1.2', '1.4.2'],
225
- ['^1.2 ^1', '1.4.2'],
226
- ['^1.2.3-alpha', '1.2.3-pre'],
227
- ['^1.2.0-alpha', '1.2.0-pre'],
228
- ['^0.0.1-alpha', '0.0.1-beta']
229
- ].forEach(function(v) {
230
- var range = v[0];
231
- var ver = v[1];
232
- var loose = v[2];
233
- t.ok(satisfies(ver, range, loose), range + ' satisfied by ' + ver);
234
- });
235
- t.end();
236
- });
237
-
238
- test('\nnegative range tests', function(t) {
239
- // [range, version]
240
- // version should not be included by range
241
- [['1.0.0 - 2.0.0', '2.2.3'],
242
- ['1.2.3+asdf - 2.4.3+asdf', '1.2.3-pre.2'],
243
- ['1.2.3+asdf - 2.4.3+asdf', '2.4.3-alpha'],
244
- ['^1.2.3+build', '2.0.0'],
245
- ['^1.2.3+build', '1.2.0'],
246
- ['^1.2.3', '1.2.3-pre'],
247
- ['^1.2', '1.2.0-pre'],
248
- ['>1.2', '1.3.0-beta'],
249
- ['<=1.2.3', '1.2.3-beta'],
250
- ['^1.2.3', '1.2.3-beta'],
251
- ['=0.7.x', '0.7.0-asdf'],
252
- ['>=0.7.x', '0.7.0-asdf'],
253
- ['1', '1.0.0beta', true],
254
- ['<1', '1.0.0beta', true],
255
- ['< 1', '1.0.0beta', true],
256
- ['1.0.0', '1.0.1'],
257
- ['>=1.0.0', '0.0.0'],
258
- ['>=1.0.0', '0.0.1'],
259
- ['>=1.0.0', '0.1.0'],
260
- ['>1.0.0', '0.0.1'],
261
- ['>1.0.0', '0.1.0'],
262
- ['<=2.0.0', '3.0.0'],
263
- ['<=2.0.0', '2.9999.9999'],
264
- ['<=2.0.0', '2.2.9'],
265
- ['<2.0.0', '2.9999.9999'],
266
- ['<2.0.0', '2.2.9'],
267
- ['>=0.1.97', 'v0.1.93', true],
268
- ['>=0.1.97', '0.1.93'],
269
- ['0.1.20 || 1.2.4', '1.2.3'],
270
- ['>=0.2.3 || <0.0.1', '0.0.3'],
271
- ['>=0.2.3 || <0.0.1', '0.2.2'],
272
- ['2.x.x', '1.1.3'],
273
- ['2.x.x', '3.1.3'],
274
- ['1.2.x', '1.3.3'],
275
- ['1.2.x || 2.x', '3.1.3'],
276
- ['1.2.x || 2.x', '1.1.3'],
277
- ['2.*.*', '1.1.3'],
278
- ['2.*.*', '3.1.3'],
279
- ['1.2.*', '1.3.3'],
280
- ['1.2.* || 2.*', '3.1.3'],
281
- ['1.2.* || 2.*', '1.1.3'],
282
- ['2', '1.1.2'],
283
- ['2.3', '2.4.1'],
284
- ['~2.4', '2.5.0'], // >=2.4.0 <2.5.0
285
- ['~2.4', '2.3.9'],
286
- ['~>3.2.1', '3.3.2'], // >=3.2.1 <3.3.0
287
- ['~>3.2.1', '3.2.0'], // >=3.2.1 <3.3.0
288
- ['~1', '0.2.3'], // >=1.0.0 <2.0.0
289
- ['~>1', '2.2.3'],
290
- ['~1.0', '1.1.0'], // >=1.0.0 <1.1.0
291
- ['<1', '1.0.0'],
292
- ['>=1.2', '1.1.1'],
293
- ['1', '2.0.0beta', true],
294
- ['~v0.5.4-beta', '0.5.4-alpha'],
295
- ['=0.7.x', '0.8.2'],
296
- ['>=0.7.x', '0.6.2'],
297
- ['<0.7.x', '0.7.2'],
298
- ['<1.2.3', '1.2.3-beta'],
299
- ['=1.2.3', '1.2.3-beta'],
300
- ['>1.2', '1.2.8'],
301
- ['^1.2.3', '2.0.0-alpha'],
302
- ['^1.2.3', '1.2.2'],
303
- ['^1.2', '1.1.9'],
304
- ['*', 'v1.2.3-foo', true],
305
- // invalid ranges never satisfied!
306
- ['blerg', '1.2.3'],
307
- ['git+https://user:password0123@github.com/foo', '123.0.0', true],
308
- ['^1.2.3', '2.0.0-pre']
309
- ].forEach(function(v) {
310
- var range = v[0];
311
- var ver = v[1];
312
- var loose = v[2];
313
- var found = satisfies(ver, range, loose);
314
- t.ok(!found, ver + ' not satisfied by ' + range);
315
- });
316
- t.end();
317
- });
318
-
319
- test('\nincrement versions test', function(t) {
320
- // [version, inc, result, identifier]
321
- // inc(version, inc) -> result
322
- [['1.2.3', 'major', '2.0.0'],
323
- ['1.2.3', 'minor', '1.3.0'],
324
- ['1.2.3', 'patch', '1.2.4'],
325
- ['1.2.3tag', 'major', '2.0.0', true],
326
- ['1.2.3-tag', 'major', '2.0.0'],
327
- ['1.2.3', 'fake', null],
328
- ['1.2.0-0', 'patch', '1.2.0'],
329
- ['fake', 'major', null],
330
- ['1.2.3-4', 'major', '2.0.0'],
331
- ['1.2.3-4', 'minor', '1.3.0'],
332
- ['1.2.3-4', 'patch', '1.2.3'],
333
- ['1.2.3-alpha.0.beta', 'major', '2.0.0'],
334
- ['1.2.3-alpha.0.beta', 'minor', '1.3.0'],
335
- ['1.2.3-alpha.0.beta', 'patch', '1.2.3'],
336
- ['1.2.4', 'prerelease', '1.2.5-0'],
337
- ['1.2.3-0', 'prerelease', '1.2.3-1'],
338
- ['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1'],
339
- ['1.2.3-alpha.1', 'prerelease', '1.2.3-alpha.2'],
340
- ['1.2.3-alpha.2', 'prerelease', '1.2.3-alpha.3'],
341
- ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-alpha.1.beta'],
342
- ['1.2.3-alpha.1.beta', 'prerelease', '1.2.3-alpha.2.beta'],
343
- ['1.2.3-alpha.2.beta', 'prerelease', '1.2.3-alpha.3.beta'],
344
- ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-alpha.10.1.beta'],
345
- ['1.2.3-alpha.10.1.beta', 'prerelease', '1.2.3-alpha.10.2.beta'],
346
- ['1.2.3-alpha.10.2.beta', 'prerelease', '1.2.3-alpha.10.3.beta'],
347
- ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-alpha.10.beta.1'],
348
- ['1.2.3-alpha.10.beta.1', 'prerelease', '1.2.3-alpha.10.beta.2'],
349
- ['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3'],
350
- ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta'],
351
- ['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta'],
352
- ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta'],
353
- ['1.2.0', 'prepatch', '1.2.1-0'],
354
- ['1.2.0-1', 'prepatch', '1.2.1-0'],
355
- ['1.2.0', 'preminor', '1.3.0-0'],
356
- ['1.2.3-1', 'preminor', '1.3.0-0'],
357
- ['1.2.0', 'premajor', '2.0.0-0'],
358
- ['1.2.3-1', 'premajor', '2.0.0-0'],
359
- ['1.2.0-1', 'minor', '1.2.0'],
360
- ['1.0.0-1', 'major', '1.0.0'],
361
-
362
- ['1.2.3', 'major', '2.0.0', false, 'dev'],
363
- ['1.2.3', 'minor', '1.3.0', false, 'dev'],
364
- ['1.2.3', 'patch', '1.2.4', false, 'dev'],
365
- ['1.2.3tag', 'major', '2.0.0', true, 'dev'],
366
- ['1.2.3-tag', 'major', '2.0.0', false, 'dev'],
367
- ['1.2.3', 'fake', null, false, 'dev'],
368
- ['1.2.0-0', 'patch', '1.2.0', false, 'dev'],
369
- ['fake', 'major', null, false, 'dev'],
370
- ['1.2.3-4', 'major', '2.0.0', false, 'dev'],
371
- ['1.2.3-4', 'minor', '1.3.0', false, 'dev'],
372
- ['1.2.3-4', 'patch', '1.2.3', false, 'dev'],
373
- ['1.2.3-alpha.0.beta', 'major', '2.0.0', false, 'dev'],
374
- ['1.2.3-alpha.0.beta', 'minor', '1.3.0', false, 'dev'],
375
- ['1.2.3-alpha.0.beta', 'patch', '1.2.3', false, 'dev'],
376
- ['1.2.4', 'prerelease', '1.2.5-dev.0', false, 'dev'],
377
- ['1.2.3-0', 'prerelease', '1.2.3-dev.0', false, 'dev'],
378
- ['1.2.3-alpha.0', 'prerelease', '1.2.3-dev.0', false, 'dev'],
379
- ['1.2.3-alpha.0', 'prerelease', '1.2.3-alpha.1', false, 'alpha'],
380
- ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'],
381
- ['1.2.3-alpha.0.beta', 'prerelease', '1.2.3-alpha.1.beta', false, 'alpha'],
382
- ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'],
383
- ['1.2.3-alpha.10.0.beta', 'prerelease', '1.2.3-alpha.10.1.beta', false, 'alpha'],
384
- ['1.2.3-alpha.10.1.beta', 'prerelease', '1.2.3-alpha.10.2.beta', false, 'alpha'],
385
- ['1.2.3-alpha.10.2.beta', 'prerelease', '1.2.3-alpha.10.3.beta', false, 'alpha'],
386
- ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-dev.0', false, 'dev'],
387
- ['1.2.3-alpha.10.beta.0', 'prerelease', '1.2.3-alpha.10.beta.1', false, 'alpha'],
388
- ['1.2.3-alpha.10.beta.1', 'prerelease', '1.2.3-alpha.10.beta.2', false, 'alpha'],
389
- ['1.2.3-alpha.10.beta.2', 'prerelease', '1.2.3-alpha.10.beta.3', false, 'alpha'],
390
- ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-dev.0', false, 'dev'],
391
- ['1.2.3-alpha.9.beta', 'prerelease', '1.2.3-alpha.10.beta', false, 'alpha'],
392
- ['1.2.3-alpha.10.beta', 'prerelease', '1.2.3-alpha.11.beta', false, 'alpha'],
393
- ['1.2.3-alpha.11.beta', 'prerelease', '1.2.3-alpha.12.beta', false, 'alpha'],
394
- ['1.2.0', 'prepatch', '1.2.1-dev.0', false, 'dev'],
395
- ['1.2.0-1', 'prepatch', '1.2.1-dev.0', false, 'dev'],
396
- ['1.2.0', 'preminor', '1.3.0-dev.0', false, 'dev'],
397
- ['1.2.3-1', 'preminor', '1.3.0-dev.0', false, 'dev'],
398
- ['1.2.0', 'premajor', '2.0.0-dev.0', false, 'dev'],
399
- ['1.2.3-1', 'premajor', '2.0.0-dev.0', false, 'dev'],
400
- ['1.2.0-1', 'minor', '1.2.0', false, 'dev'],
401
- ['1.0.0-1', 'major', '1.0.0', false, 'dev'],
402
- ['1.2.3-dev.bar', 'prerelease', '1.2.3-dev.0', false, 'dev']
403
-
404
- ].forEach(function(v) {
405
- var pre = v[0];
406
- var what = v[1];
407
- var wanted = v[2];
408
- var loose = v[3];
409
- var id = v[4];
410
- var found = inc(pre, what, loose, id);
411
- var cmd = 'inc(' + pre + ', ' + what + ', ' + id + ')';
412
- t.equal(found, wanted, cmd + ' === ' + wanted);
413
-
414
- var parsed = semver.parse(pre, loose);
415
- if (wanted) {
416
- parsed.inc(what, id);
417
- t.equal(parsed.version, wanted, cmd + ' object version updated');
418
- t.equal(parsed.raw, wanted, cmd + ' object raw field updated');
419
- } else if (parsed) {
420
- t.throws(function () {
421
- parsed.inc(what, id)
422
- })
423
- } else {
424
- t.equal(parsed, null)
425
- }
426
- });
427
-
428
- t.end();
429
- });
430
-
431
- test('\ndiff versions test', function(t) {
432
- // [version1, version2, result]
433
- // diff(version1, version2) -> result
434
- [['1.2.3', '0.2.3', 'major'],
435
- ['1.4.5', '0.2.3', 'major'],
436
- ['1.2.3', '2.0.0-pre', 'premajor'],
437
- ['1.2.3', '1.3.3', 'minor'],
438
- ['1.0.1', '1.1.0-pre', 'preminor'],
439
- ['1.2.3', '1.2.4', 'patch'],
440
- ['1.2.3', '1.2.4-pre', 'prepatch'],
441
- ['0.0.1', '0.0.1-pre', 'prerelease'],
442
- ['0.0.1', '0.0.1-pre-2', 'prerelease'],
443
- ['1.1.0', '1.1.0-pre', 'prerelease'],
444
- ['1.1.0-pre-1', '1.1.0-pre-2', 'prerelease'],
445
- ['1.0.0', '1.0.0', null]
446
-
447
- ].forEach(function(v) {
448
- var version1 = v[0];
449
- var version2 = v[1];
450
- var wanted = v[2];
451
- var found = diff(version1, version2);
452
- var cmd = 'diff(' + version1 + ', ' + version2 + ')';
453
- t.equal(found, wanted, cmd + ' === ' + wanted);
454
- });
455
-
456
- t.end();
457
- });
458
-
459
- test('\nvalid range test', function(t) {
460
- // [range, result]
461
- // validRange(range) -> result
462
- // translate ranges into their canonical form
463
- [['1.0.0 - 2.0.0', '>=1.0.0 <=2.0.0'],
464
- ['1.0.0', '1.0.0'],
465
- ['>=*', '*'],
466
- ['', '*'],
467
- ['*', '*'],
468
- ['*', '*'],
469
- ['>=1.0.0', '>=1.0.0'],
470
- ['>1.0.0', '>1.0.0'],
471
- ['<=2.0.0', '<=2.0.0'],
472
- ['1', '>=1.0.0 <2.0.0'],
473
- ['<=2.0.0', '<=2.0.0'],
474
- ['<=2.0.0', '<=2.0.0'],
475
- ['<2.0.0', '<2.0.0'],
476
- ['<2.0.0', '<2.0.0'],
477
- ['>= 1.0.0', '>=1.0.0'],
478
- ['>= 1.0.0', '>=1.0.0'],
479
- ['>= 1.0.0', '>=1.0.0'],
480
- ['> 1.0.0', '>1.0.0'],
481
- ['> 1.0.0', '>1.0.0'],
482
- ['<= 2.0.0', '<=2.0.0'],
483
- ['<= 2.0.0', '<=2.0.0'],
484
- ['<= 2.0.0', '<=2.0.0'],
485
- ['< 2.0.0', '<2.0.0'],
486
- ['< 2.0.0', '<2.0.0'],
487
- ['>=0.1.97', '>=0.1.97'],
488
- ['>=0.1.97', '>=0.1.97'],
489
- ['0.1.20 || 1.2.4', '0.1.20||1.2.4'],
490
- ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'],
491
- ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'],
492
- ['>=0.2.3 || <0.0.1', '>=0.2.3||<0.0.1'],
493
- ['||', '||'],
494
- ['2.x.x', '>=2.0.0 <3.0.0'],
495
- ['1.2.x', '>=1.2.0 <1.3.0'],
496
- ['1.2.x || 2.x', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'],
497
- ['1.2.x || 2.x', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'],
498
- ['x', '*'],
499
- ['2.*.*', '>=2.0.0 <3.0.0'],
500
- ['1.2.*', '>=1.2.0 <1.3.0'],
501
- ['1.2.* || 2.*', '>=1.2.0 <1.3.0||>=2.0.0 <3.0.0'],
502
- ['*', '*'],
503
- ['2', '>=2.0.0 <3.0.0'],
504
- ['2.3', '>=2.3.0 <2.4.0'],
505
- ['~2.4', '>=2.4.0 <2.5.0'],
506
- ['~2.4', '>=2.4.0 <2.5.0'],
507
- ['~>3.2.1', '>=3.2.1 <3.3.0'],
508
- ['~1', '>=1.0.0 <2.0.0'],
509
- ['~>1', '>=1.0.0 <2.0.0'],
510
- ['~> 1', '>=1.0.0 <2.0.0'],
511
- ['~1.0', '>=1.0.0 <1.1.0'],
512
- ['~ 1.0', '>=1.0.0 <1.1.0'],
513
- ['^0', '>=0.0.0 <1.0.0'],
514
- ['^ 1', '>=1.0.0 <2.0.0'],
515
- ['^0.1', '>=0.1.0 <0.2.0'],
516
- ['^1.0', '>=1.0.0 <2.0.0'],
517
- ['^1.2', '>=1.2.0 <2.0.0'],
518
- ['^0.0.1', '>=0.0.1 <0.0.2'],
519
- ['^0.0.1-beta', '>=0.0.1-beta <0.0.2'],
520
- ['^0.1.2', '>=0.1.2 <0.2.0'],
521
- ['^1.2.3', '>=1.2.3 <2.0.0'],
522
- ['^1.2.3-beta.4', '>=1.2.3-beta.4 <2.0.0'],
523
- ['<1', '<1.0.0'],
524
- ['< 1', '<1.0.0'],
525
- ['>=1', '>=1.0.0'],
526
- ['>= 1', '>=1.0.0'],
527
- ['<1.2', '<1.2.0'],
528
- ['< 1.2', '<1.2.0'],
529
- ['1', '>=1.0.0 <2.0.0'],
530
- ['>01.02.03', '>1.2.3', true],
531
- ['>01.02.03', null],
532
- ['~1.2.3beta', '>=1.2.3-beta <1.3.0', true],
533
- ['~1.2.3beta', null],
534
- ['^ 1.2 ^ 1', '>=1.2.0 <2.0.0 >=1.0.0 <2.0.0']
535
- ].forEach(function(v) {
536
- var pre = v[0];
537
- var wanted = v[1];
538
- var loose = v[2];
539
- var found = validRange(pre, loose);
540
-
541
- t.equal(found, wanted, 'validRange(' + pre + ') === ' + wanted);
542
- });
543
-
544
- t.end();
545
- });
546
-
547
- test('\ncomparators test', function(t) {
548
- // [range, comparators]
549
- // turn range into a set of individual comparators
550
- [['1.0.0 - 2.0.0', [['>=1.0.0', '<=2.0.0']]],
551
- ['1.0.0', [['1.0.0']]],
552
- ['>=*', [['']]],
553
- ['', [['']]],
554
- ['*', [['']]],
555
- ['*', [['']]],
556
- ['>=1.0.0', [['>=1.0.0']]],
557
- ['>=1.0.0', [['>=1.0.0']]],
558
- ['>=1.0.0', [['>=1.0.0']]],
559
- ['>1.0.0', [['>1.0.0']]],
560
- ['>1.0.0', [['>1.0.0']]],
561
- ['<=2.0.0', [['<=2.0.0']]],
562
- ['1', [['>=1.0.0', '<2.0.0']]],
563
- ['<=2.0.0', [['<=2.0.0']]],
564
- ['<=2.0.0', [['<=2.0.0']]],
565
- ['<2.0.0', [['<2.0.0']]],
566
- ['<2.0.0', [['<2.0.0']]],
567
- ['>= 1.0.0', [['>=1.0.0']]],
568
- ['>= 1.0.0', [['>=1.0.0']]],
569
- ['>= 1.0.0', [['>=1.0.0']]],
570
- ['> 1.0.0', [['>1.0.0']]],
571
- ['> 1.0.0', [['>1.0.0']]],
572
- ['<= 2.0.0', [['<=2.0.0']]],
573
- ['<= 2.0.0', [['<=2.0.0']]],
574
- ['<= 2.0.0', [['<=2.0.0']]],
575
- ['< 2.0.0', [['<2.0.0']]],
576
- ['<\t2.0.0', [['<2.0.0']]],
577
- ['>=0.1.97', [['>=0.1.97']]],
578
- ['>=0.1.97', [['>=0.1.97']]],
579
- ['0.1.20 || 1.2.4', [['0.1.20'], ['1.2.4']]],
580
- ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]],
581
- ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]],
582
- ['>=0.2.3 || <0.0.1', [['>=0.2.3'], ['<0.0.1']]],
583
- ['||', [[''], ['']]],
584
- ['2.x.x', [['>=2.0.0', '<3.0.0']]],
585
- ['1.2.x', [['>=1.2.0', '<1.3.0']]],
586
- ['1.2.x || 2.x', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]],
587
- ['1.2.x || 2.x', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]],
588
- ['x', [['']]],
589
- ['2.*.*', [['>=2.0.0', '<3.0.0']]],
590
- ['1.2.*', [['>=1.2.0', '<1.3.0']]],
591
- ['1.2.* || 2.*', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]],
592
- ['1.2.* || 2.*', [['>=1.2.0', '<1.3.0'], ['>=2.0.0', '<3.0.0']]],
593
- ['*', [['']]],
594
- ['2', [['>=2.0.0', '<3.0.0']]],
595
- ['2.3', [['>=2.3.0', '<2.4.0']]],
596
- ['~2.4', [['>=2.4.0', '<2.5.0']]],
597
- ['~2.4', [['>=2.4.0', '<2.5.0']]],
598
- ['~>3.2.1', [['>=3.2.1', '<3.3.0']]],
599
- ['~1', [['>=1.0.0', '<2.0.0']]],
600
- ['~>1', [['>=1.0.0', '<2.0.0']]],
601
- ['~> 1', [['>=1.0.0', '<2.0.0']]],
602
- ['~1.0', [['>=1.0.0', '<1.1.0']]],
603
- ['~ 1.0', [['>=1.0.0', '<1.1.0']]],
604
- ['~ 1.0.3', [['>=1.0.3', '<1.1.0']]],
605
- ['~> 1.0.3', [['>=1.0.3', '<1.1.0']]],
606
- ['<1', [['<1.0.0']]],
607
- ['< 1', [['<1.0.0']]],
608
- ['>=1', [['>=1.0.0']]],
609
- ['>= 1', [['>=1.0.0']]],
610
- ['<1.2', [['<1.2.0']]],
611
- ['< 1.2', [['<1.2.0']]],
612
- ['1', [['>=1.0.0', '<2.0.0']]],
613
- ['1 2', [['>=1.0.0', '<2.0.0', '>=2.0.0', '<3.0.0']]],
614
- ['1.2 - 3.4.5', [['>=1.2.0', '<=3.4.5']]],
615
- ['1.2.3 - 3.4', [['>=1.2.3', '<3.5.0']]],
616
- ['1.2.3 - 3', [['>=1.2.3', '<4.0.0']]],
617
- ['>*', [['<0.0.0']]],
618
- ['<*', [['<0.0.0']]]
619
- ].forEach(function(v) {
620
- var pre = v[0];
621
- var wanted = v[1];
622
- var found = toComparators(v[0]);
623
- var jw = JSON.stringify(wanted);
624
- t.equivalent(found, wanted, 'toComparators(' + pre + ') === ' + jw);
625
- });
626
-
627
- t.end();
628
- });
629
-
630
- test('\ninvalid version numbers', function(t) {
631
- ['1.2.3.4',
632
- 'NOT VALID',
633
- 1.2,
634
- null,
635
- 'Infinity.NaN.Infinity'
636
- ].forEach(function(v) {
637
- t.throws(function() {
638
- new SemVer(v);
639
- }, {name:'TypeError', message:'Invalid Version: ' + v});
640
- });
641
-
642
- t.end();
643
- });
644
-
645
- test('\nstrict vs loose version numbers', function(t) {
646
- [['=1.2.3', '1.2.3'],
647
- ['01.02.03', '1.2.3'],
648
- ['1.2.3-beta.01', '1.2.3-beta.1'],
649
- [' =1.2.3', '1.2.3'],
650
- ['1.2.3foo', '1.2.3-foo']
651
- ].forEach(function(v) {
652
- var loose = v[0];
653
- var strict = v[1];
654
- t.throws(function() {
655
- new SemVer(loose);
656
- });
657
- var lv = new SemVer(loose, true);
658
- t.equal(lv.version, strict);
659
- t.ok(eq(loose, strict, true));
660
- t.throws(function() {
661
- eq(loose, strict);
662
- });
663
- t.throws(function() {
664
- new SemVer(strict).compare(loose);
665
- });
666
- });
667
- t.end();
668
- });
669
-
670
- test('\nstrict vs loose ranges', function(t) {
671
- [['>=01.02.03', '>=1.2.3'],
672
- ['~1.02.03beta', '>=1.2.3-beta <1.3.0']
673
- ].forEach(function(v) {
674
- var loose = v[0];
675
- var comps = v[1];
676
- t.throws(function() {
677
- new Range(loose);
678
- });
679
- t.equal(new Range(loose, true).range, comps);
680
- });
681
- t.end();
682
- });
683
-
684
- test('\nmax satisfying', function(t) {
685
- [[['1.2.3', '1.2.4'], '1.2', '1.2.4'],
686
- [['1.2.4', '1.2.3'], '1.2', '1.2.4'],
687
- [['1.2.3', '1.2.4', '1.2.5', '1.2.6'], '~1.2.3', '1.2.6'],
688
- [['1.1.0', '1.2.0', '1.2.1', '1.3.0', '2.0.0b1', '2.0.0b2', '2.0.0b3', '2.0.0', '2.1.0'], '~2.0.0', '2.0.0', true]
689
- ].forEach(function(v) {
690
- var versions = v[0];
691
- var range = v[1];
692
- var expect = v[2];
693
- var loose = v[3];
694
- var actual = semver.maxSatisfying(versions, range, loose);
695
- t.equal(actual, expect);
696
- });
697
- t.end();
698
- });