forked from meteor/meteor
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathversion-parser.js
More file actions
124 lines (118 loc) · 3.56 KB
/
version-parser.js
File metadata and controls
124 lines (118 loc) · 3.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
var _ = require('underscore');
var utils = require('../utils.js');
var selftest = require('../selftest.js');
/*
var testVersions = function (cases) {
_.each(cases, function (c) {
var input = c[0];
var expectedOutput = c[1];
if (expectedOutput === null) {
selftest.expectThrows(function () {
utils.parseConstraint(input);
});
} else {
var actualOutput = utils.parseConstraint(input);
selftest.expectEqual(actualOutput, expectedOutput);
}
});
};
selftest.define("version parsing - old format", function () {
testVersions([
["foo", { name: "foo", version: null, exact: false }],
["foo-1234", { name: "foo-1234", version: null, exact: false }],
["my_awesome_InconsitentPackage123", null]
]);
});
*/
selftest.define("version parsing - compatible version", function () {
console.log("XXX: version tests");
/* testVersions([
["foo@1.2.3", { name: "foo", version: "1.2.3", exact: false }],
["foo-1233@1.2.3", { name: "foo-1233", version: "1.2.3", exact: false }],
["foo-bar@3.2.1", { name: "foo-bar", version: "3.2.1", exact: false }],
["42@0.2.0", { name: "42", version: "0.2.0", exact: false }],
["foo@1.2.3.4", null],
["foo@1.4", null],
["foo@1", null],
["foo@", null],
["foo@@", null],
["foo@x.y.z", null],
["foo@<1.2", null],
["foo<1.2", null]
]); */
});
/*
selftest.define("version parsing - compatible version exact", function () {
testVersions([
["foo@=1.2.3", { name: "foo", version: "1.2.3", exact: true }],
["foo-bar@=3.2.1", { name: "foo-bar", version: "3.2.1", exact: true }],
["42@=0.2.0", { name: "42", version: "0.2.0", exact: true }],
["foo@=1.2.3.4", null],
["foo@=1.4", null],
["foo@=1", null],
["foo@@=", null],
["foo@=@", null],
["foo@=x.y.z", null],
["foo@=<1.2", null],
["foo@<=1.2", null],
["foo<=1.2", null]
]);
});
selftest.define("release management - default orderKey", function () {
var t = function (cases) {
_.each(cases, function (c) {
var version = c[0];
var expectedOrderKey = c[1];
var actualOrderKey = utils.defaultOrderKeyForReleaseVersion(version);
selftest.expectEqual(actualOrderKey, expectedOrderKey);
});
};
t([
['1', '0001$'],
['0', '0000$'],
['01', null],
['', null],
['1.2.3', '0001.0002.0003$'],
['42.123', '0042.0123$'],
['1234', '1234$'],
['12345', null],
['123.012', null],
['1.2.3-preview', '0001.0002.0003!preview!!!!!!!!$'],
['1.2.3.4-AbCdEfG-HiJkLmO', '0001.0002.0003.0004!AbCdEfG-HiJkLmO$'],
['1.2.3.4-AbCdEfG-HiJkLmOp', null],
['1.2.3.4-AbCdEfG-HiJkLmO0', '0001.0002.0003.0004!AbCdEfG-HiJkLmO0000$'],
['1.2.3.4-AbCdEfG-HiJkLmO01', null],
['1.2.3.4-AbCdEfG-HiJkLmO12345', null],
['1.2.3.4-AbCdEfG-HiJkLmO15', '0001.0002.0003.0004!AbCdEfG-HiJkLmO0015$'],
['1.2.3.4-rc2', '0001.0002.0003.0004!rc!!!!!!!!!!!!!0002$'],
['1.2.3.4-2rc', null],
['1.2.3.4r', null]
]);
var ordered = [
'1.2',
'1.2.0',
'1.2.1',
'1.2.1.4',
'1.2.2',
'1.2.15',
'1.15.2',
'1.15.3-preview',
'1.15.3-preview2',
'1.15.3-preview15',
'1.15.3-rc',
'1.15.3-rc2',
'1.15.3-rc15',
'1.15.3-rd15',
'1.15.3-rda15',
'1.15.3',
'2'
];
for (var i = 0; i < ordered.length - 1; ++i) {
var first = utils.defaultOrderKeyForReleaseVersion(ordered[i]);
var next = utils.defaultOrderKeyForReleaseVersion(ordered[i + 1]);
selftest.expectEqual(first !== null, true);
selftest.expectEqual(next !== null, true);
selftest.expectEqual(first < next, true);
}
});
*/