UNPKG

6.76 kBJavaScriptView Raw
1var test = require('tape')
2var semver = require('semver')
3var getAbi = require('../index').getAbi
4var getTarget = require('../index').getTarget
5var getNextTarget = require('../index')._getNextTarget
6var allTargets = require('../index').allTargets
7
8test('getNextTarget gets the next unsupported target', function (t) {
9 var mockTargets = [
10 {runtime: 'node', target: '7.0.0', abi: '51', lts: false},
11 {runtime: 'node', target: '8.0.0', abi: '57', lts: false},
12 {runtime: 'electron', target: '0.36.0', abi: '47', lts: false},
13 {runtime: 'electron', target: '1.1.0', abi: '48', lts: false}
14 ]
15 t.equal(getNextTarget('node', mockTargets), '9.0.0')
16 t.equal(getNextTarget('electron', mockTargets), '1.2.0')
17 t.end()
18})
19
20test('getTarget calculates correct Node target', function (t) {
21 t.equal(getTarget(undefined), process.versions.node)
22 t.equal(getTarget(null), process.versions.node)
23 t.equal(getTarget('11'), '0.10.4')
24 t.equal(getTarget('14'), '0.11.11')
25 t.equal(getTarget('46'), '4.0.0')
26 t.equal(getTarget('47'), '5.0.0')
27 t.equal(getTarget('48'), '6.0.0')
28 t.equal(getTarget('51'), '7.0.0')
29 t.equal(getTarget('67'), '11.0.0')
30 t.equal(getTarget('72'), '12.0.0')
31 t.equal(getTarget('83'), '14.0.0')
32 t.equal(getTarget('88'), '15.0.0')
33 t.end()
34})
35
36test('getTarget calculates correct Electron target', function (t) {
37 t.throws(getTarget.bind(null, '14', 'electron'))
38 t.equal(getTarget('47', 'electron'), '0.36.0')
39 t.equal(getTarget('48', 'electron'), '1.1.0')
40 t.equal(getTarget('49', 'electron'), '1.3.0')
41 t.equal(getTarget('50', 'electron'), '1.4.0')
42 t.equal(getTarget('76', 'electron'), '8.0.0')
43 t.equal(getTarget('82', 'electron'), '10.0.0')
44 t.end()
45})
46
47test('getTarget calculates correct Node-Webkit target', function (t) {
48 t.throws(getTarget.bind(null, '14', 'ode-webkit'))
49 t.equal(getTarget('47', 'node-webkit'), '0.13.0')
50 t.equal(getTarget('48', 'node-webkit'), '0.15.0')
51 t.equal(getTarget('51', 'node-webkit'), '0.18.3')
52 t.equal(getTarget('57', 'node-webkit'), '0.23.0')
53 t.equal(getTarget('59', 'node-webkit'), '0.26.5')
54 t.end()
55})
56
57test('getAbi calculates correct Node ABI', function (t) {
58 t.equal(getAbi(undefined), process.versions.modules)
59 t.equal(getAbi(null), process.versions.modules)
60 t.throws(function () { getAbi('a.b.c') })
61 t.throws(function () { getAbi(getNextTarget('node')) })
62 t.equal(getAbi('15.0.0'), '88')
63 t.equal(getAbi('14.0.0'), '83')
64 t.equal(getAbi('13.0.0'), '79')
65 t.equal(getAbi('12.0.0'), '72')
66 t.equal(getAbi('11.0.0'), '67')
67 t.equal(getAbi('7.2.0'), '51')
68 t.equal(getAbi('7.0.0'), '51')
69 t.equal(getAbi('6.9.9'), '48')
70 t.equal(getAbi('6.0.0'), '48')
71 t.equal(getAbi('5.9.9'), '47')
72 t.equal(getAbi('5.0.0'), '47')
73 t.equal(getAbi('4.9.9'), '46')
74 t.equal(getAbi('4.0.0'), '46')
75 t.equal(getAbi('0.12.17'), '14')
76 t.equal(getAbi('0.12.0'), '14')
77 t.equal(getAbi('0.11.16'), '14')
78 t.equal(getAbi('0.11.11'), '14')
79 t.equal(getAbi('0.11.10'), '13')
80 t.equal(getAbi('0.11.8'), '13')
81 t.equal(getAbi('0.11.7'), '0x000C')
82 t.equal(getAbi('0.11.0'), '0x000C')
83 t.equal(getAbi('0.10.48'), '11')
84 t.equal(getAbi('0.10.30'), '11')
85 t.equal(getAbi('0.10.4'), '11')
86 t.equal(getAbi('0.10.3'), '0x000B')
87 t.equal(getAbi('0.10.1'), '0x000B')
88 t.equal(getAbi('0.10.0'), '0x000B')
89 t.equal(getAbi('0.9.12'), '0x000B')
90 t.equal(getAbi('0.9.9'), '0x000B')
91 t.equal(getAbi('0.9.8'), '0x000A')
92 t.equal(getAbi('0.9.1'), '0x000A')
93 t.equal(getAbi('0.9.0'), '1')
94 t.equal(getAbi('0.8.0'), '1')
95 t.equal(getAbi('0.2.0'), '1')
96 t.end()
97})
98
99test('getAbi calculates correct Electron ABI', function (t) {
100 t.throws(function () { getAbi(undefined, 'electron') })
101 t.throws(function () { getAbi(getNextTarget('electron'), 'electron') })
102 t.equal(getAbi('10.0.0-beta.1', 'electron'), '82')
103 t.equal(getAbi('10.0.0', 'electron'), '82')
104 t.equal(getAbi('9.0.0', 'electron'), '80')
105 t.equal(getAbi('8.0.0', 'electron'), '76')
106 t.equal(getAbi('7.0.0', 'electron'), '75')
107 t.equal(getAbi('6.0.0', 'electron'), '73')
108 t.equal(getAbi('5.0.0', 'electron'), '70')
109 t.equal(getAbi('4.1.4', 'electron'), '69')
110 t.equal(getAbi('4.0.4', 'electron'), '69')
111 t.equal(getAbi('4.0.3', 'electron'), '64')
112 t.equal(getAbi('3.1.8', 'electron'), '64')
113 t.equal(getAbi('2.0.18', 'electron'), '57')
114 t.equal(getAbi('1.4.0', 'electron'), '50')
115 t.equal(getAbi('1.3.0', 'electron'), '49')
116 t.equal(getAbi('1.2.0', 'electron'), '48')
117 t.equal(getAbi('1.1.0', 'electron'), '48')
118 t.equal(getAbi('1.0.0', 'electron'), '47')
119 t.equal(getAbi('0.37.0', 'electron'), '47')
120 t.equal(getAbi('0.36.0', 'electron'), '47')
121 t.equal(getAbi('0.35.0', 'electron'), '46')
122 t.equal(getAbi('0.34.0', 'electron'), '46')
123 t.equal(getAbi('0.33.0', 'electron'), '46')
124 t.equal(getAbi('0.32.0', 'electron'), '45')
125 t.equal(getAbi('0.31.0', 'electron'), '45')
126 t.equal(getAbi('0.30.0', 'electron'), '44')
127 t.end()
128})
129
130test('getAbi calculates correct Node-Webkit ABI', function (t) {
131 t.throws(function () { getAbi(undefined, 'node-webkit') })
132 t.throws(function () { getAbi(getNextTarget('node-webkit'), 'node-webkit') })
133 t.equal(getAbi('0.13.0', 'node-webkit'), '47')
134 t.equal(getAbi('0.14.0', 'node-webkit'), '47')
135 t.equal(getAbi('0.15.0', 'node-webkit'), '48')
136 t.equal(getAbi('0.16.0', 'node-webkit'), '48')
137 t.equal(getAbi('0.17.0', 'node-webkit'), '48')
138 t.equal(getAbi('0.18.2', 'node-webkit'), '48')
139 t.equal(getAbi('0.18.3', 'node-webkit'), '51')
140 t.equal(getAbi('0.19.0', 'node-webkit'), '51')
141 t.equal(getAbi('0.20.0', 'node-webkit'), '51')
142 t.equal(getAbi('0.21.0', 'node-webkit'), '51')
143 t.equal(getAbi('0.22.0', 'node-webkit'), '51')
144 t.equal(getAbi('0.23.0', 'node-webkit'), '57')
145 t.equal(getAbi('0.24.0', 'node-webkit'), '57')
146 t.equal(getAbi('0.25.0', 'node-webkit'), '57')
147 t.equal(getAbi('0.26.4', 'node-webkit'), '57')
148 t.equal(getAbi('0.26.5', 'node-webkit'), '59')
149 t.end()
150})
151
152test('getAbi supports leading v', function (t) {
153 t.equal(getAbi('v7.2.0'), '51')
154 t.end()
155})
156
157test('getAbi returns abi if passed as target', function (t) {
158 t.equal(getAbi('57'), '57')
159 t.end()
160})
161
162test('allTargets are sorted', function (t) {
163 var electron = allTargets.filter(function (t) { return t.runtime === 'electron' })
164 var node = allTargets.filter(function (t) { return t.runtime === 'node' })
165 var nodeWebkit = allTargets.filter(function (t) { return t.runtime === 'node-webkit' })
166 function sort (t1, t2) {
167 return semver.compare(t1.target, t2.target)
168 }
169
170 t.deepEqual(electron, electron.slice().sort(sort), 'electron targets are sorted')
171 t.deepEqual(node, node.slice().sort(sort), 'node targets are sorted')
172 t.deepEqual(nodeWebkit, nodeWebkit.slice().sort(sort), 'node-webkit targets are sorted')
173 t.end()
174})