ts-node-client 3.2.0 → 3.2.2
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/.editorconfig +10 -10
- package/.eslintrc.json +29 -29
- package/.gitattributes +4 -4
- package/.github/workflows/codeql-analysis.yml +71 -71
- package/.github/workflows/publish.yml +32 -0
- package/.travis.yml +12 -12
- package/CHANGELOG.md +58 -46
- package/LICENSE +202 -202
- package/README.md +191 -191
- package/SECURITY.md +21 -21
- package/lib/cli.js +122 -122
- package/lib/convertor.js +244 -244
- package/lib/dependency.js +169 -169
- package/lib/meteor-scanner.js +61 -61
- package/lib/npm-scanner.js +334 -334
- package/lib/pkg.js +36 -36
- package/lib/rest-client.js +129 -129
- package/lib/scanresult.js +32 -32
- package/package-lock.json +5147 -0
- package/package-lock_dev_test.json +47 -0
- package/package.json +2 -2
- package/test/dependency-test.js +309 -309
- package/test/error-test.js +80 -80
- package/test/rest-test.js +75 -75
- package/test/scanresult-test.js +44 -44
- package/.yarnrc.yml +0 -1
package/test/dependency-test.js
CHANGED
|
@@ -1,309 +1,309 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
/**********************************************************
|
|
3
|
-
* Copyright (c) 2017. Enterprise Architecture Group, EACG
|
|
4
|
-
*
|
|
5
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
-
*********************************************************/
|
|
7
|
-
/* eslint-enable */
|
|
8
|
-
/* eslint-env mocha */
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const assert = require('assert');
|
|
12
|
-
const Dependency = require('../lib/dependency');
|
|
13
|
-
|
|
14
|
-
/* eslint-disable no-new, no-new-wrappers */
|
|
15
|
-
describe('Dependency', () => {
|
|
16
|
-
describe('Constructor', () => {
|
|
17
|
-
it('should set key with "system" as prefix for name', () => {
|
|
18
|
-
assert.equal(new Dependency('karl', '---', 'npm').key, 'npm:karl');
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('should set name, version, description, homepageUrl and repoUrl', () => {
|
|
22
|
-
const dep = new Dependency('name', 'version', '---', 'description', '---', '---', 'home', 'repo');
|
|
23
|
-
assert.equal(dep.name, 'name');
|
|
24
|
-
assert.deepEqual(dep.versions, ['version']);
|
|
25
|
-
assert.equal(dep.description, 'description');
|
|
26
|
-
assert.equal(dep.homepageUrl, 'home');
|
|
27
|
-
assert.equal(dep.repoUrl, 'repo');
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it('should set private even if undefined', () => {
|
|
31
|
-
assert.equal(new Dependency('name', 'version', '---', 'descr', true).private, true);
|
|
32
|
-
assert.equal(new Dependency('name', 'version', '---', 'descr', false).private, false);
|
|
33
|
-
assert.equal(new Dependency('name', 'version', '---', 'descr', undefined).private, false);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('should set license as object', () => {
|
|
37
|
-
assert.deepEqual(new Dependency('---', '---', '---', '', true, 'MIT').licenses[0], { name: 'MIT' });
|
|
38
|
-
assert.deepEqual(new Dependency('---', '---', '---', '', true, { type: 'MIT' }).licenses[0], { name: 'MIT' });
|
|
39
|
-
assert.deepEqual(
|
|
40
|
-
new Dependency('---', '---', '---', '', true, { type: 'MIT', url: 'https://test' }).licenses[0],
|
|
41
|
-
{ name: 'MIT', url: 'https://test' }
|
|
42
|
-
);
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it('should set license as array', () => {
|
|
46
|
-
assert.deepEqual(
|
|
47
|
-
new Dependency('---', '---', '---', '', true, ['MIT', 'Apache']).licenses,
|
|
48
|
-
[{ name: 'MIT' }, { name: 'Apache' }]
|
|
49
|
-
);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it('should set license as array of objects', () => {
|
|
53
|
-
assert.deepEqual(
|
|
54
|
-
new Dependency('---', '---', '---', '', true, [{ type: 'MIT', url: 'url' }, { type: 'Apache' }]).licenses,
|
|
55
|
-
[{ name: 'MIT', url: 'url' }, { name: 'Apache' }]
|
|
56
|
-
);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it('should not accept empty or invalid name', () => {
|
|
60
|
-
assert.throws(() => {
|
|
61
|
-
new Dependency();
|
|
62
|
-
}, Error);
|
|
63
|
-
assert.throws(() => {
|
|
64
|
-
new Dependency(undefined);
|
|
65
|
-
}, Error);
|
|
66
|
-
assert.throws(() => {
|
|
67
|
-
new Dependency(null);
|
|
68
|
-
}, Error);
|
|
69
|
-
assert.throws(() => {
|
|
70
|
-
new Dependency('');
|
|
71
|
-
}, Error);
|
|
72
|
-
assert.throws(() => {
|
|
73
|
-
new Dependency(new String());
|
|
74
|
-
}, Error);
|
|
75
|
-
assert.throws(() => {
|
|
76
|
-
new Dependency(new String(''));
|
|
77
|
-
}, Error);
|
|
78
|
-
assert.throws(() => {
|
|
79
|
-
new Dependency(1234);
|
|
80
|
-
}, Error);
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
it('should accept literal or String object as name', () => {
|
|
84
|
-
assert.doesNotThrow(() => {
|
|
85
|
-
assert.equal(new Dependency('name', '---', '---').name, 'name');
|
|
86
|
-
}, Error);
|
|
87
|
-
assert.doesNotThrow(() => {
|
|
88
|
-
assert.equal(new Dependency(new String('name'), '---', '---').name, 'name');
|
|
89
|
-
}, Error);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it('should not accept empty or invalid version', () => {
|
|
93
|
-
assert.throws(() => {
|
|
94
|
-
new Dependency('name');
|
|
95
|
-
}, Error);
|
|
96
|
-
assert.throws(() => {
|
|
97
|
-
new Dependency('name', undefined);
|
|
98
|
-
}, Error);
|
|
99
|
-
assert.throws(() => {
|
|
100
|
-
new Dependency('name', null);
|
|
101
|
-
}, Error);
|
|
102
|
-
assert.throws(() => {
|
|
103
|
-
new Dependency('name', '');
|
|
104
|
-
}, Error);
|
|
105
|
-
assert.throws(() => {
|
|
106
|
-
new Dependency('name', new String());
|
|
107
|
-
}, Error);
|
|
108
|
-
assert.throws(() => {
|
|
109
|
-
new Dependency('name', new String(''));
|
|
110
|
-
}, Error);
|
|
111
|
-
assert.throws(() => {
|
|
112
|
-
new Dependency('name', new Date());
|
|
113
|
-
}, Error);
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
it('should accept literal or String object as version', () => {
|
|
117
|
-
assert.deepEqual(new Dependency('----', 'version', '---').versions, ['version']);
|
|
118
|
-
assert.deepEqual(new Dependency('---', new String('version'), '---').versions, ['version']);
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
it('should not accept empty or invalid key-prefix', () => {
|
|
122
|
-
assert.throws(() => {
|
|
123
|
-
new Dependency('name', 'version');
|
|
124
|
-
}, Error);
|
|
125
|
-
assert.throws(() => {
|
|
126
|
-
new Dependency('name', 'version', undefined);
|
|
127
|
-
}, Error);
|
|
128
|
-
assert.throws(() => {
|
|
129
|
-
new Dependency('name', 'version', null);
|
|
130
|
-
}, Error);
|
|
131
|
-
assert.throws(() => {
|
|
132
|
-
new Dependency('name', 'version', '');
|
|
133
|
-
}, Error);
|
|
134
|
-
assert.throws(() => {
|
|
135
|
-
new Dependency('name', 'version', new String());
|
|
136
|
-
}, Error);
|
|
137
|
-
assert.throws(() => {
|
|
138
|
-
new Dependency('name', 'version', new String(''));
|
|
139
|
-
}, Error);
|
|
140
|
-
assert.throws(() => {
|
|
141
|
-
new Dependency('name', 'version', new Number(3));
|
|
142
|
-
}, Error);
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
it('should accept literal or String object as key-prefix', () => {
|
|
146
|
-
assert.deepEqual(new Dependency('name', '---', 'xxx').key, 'xxx:name');
|
|
147
|
-
assert.deepEqual(new Dependency('name', '---', new String('xxx')).key, 'xxx:name');
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
it('should extract additional repo-protocol from url', () => {
|
|
151
|
-
assert.deepEqual(
|
|
152
|
-
new Dependency(
|
|
153
|
-
'name',
|
|
154
|
-
'version',
|
|
155
|
-
'---',
|
|
156
|
-
'description',
|
|
157
|
-
'---',
|
|
158
|
-
'---',
|
|
159
|
-
'home',
|
|
160
|
-
'git+https://github.com/eacg-gmbh/ecs-grunt-plugin.git'
|
|
161
|
-
).repoUrl,
|
|
162
|
-
'https://github.com/eacg-gmbh/ecs-grunt-plugin.git'
|
|
163
|
-
);
|
|
164
|
-
assert.deepEqual(
|
|
165
|
-
new Dependency(
|
|
166
|
-
'name',
|
|
167
|
-
'version',
|
|
168
|
-
'---',
|
|
169
|
-
'description',
|
|
170
|
-
'---',
|
|
171
|
-
'---',
|
|
172
|
-
'home',
|
|
173
|
-
'svn+http://svnrepo.com/test.svn'
|
|
174
|
-
).repoUrl,
|
|
175
|
-
'http://svnrepo.com/test.svn'
|
|
176
|
-
);
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
it('should set defaults', () => {
|
|
181
|
-
const dep = new Dependency('name', 'version', '---');
|
|
182
|
-
assert.deepEqual(dep.versions, ['version']);
|
|
183
|
-
assert.equal(dep.description, undefined);
|
|
184
|
-
assert.equal(dep.private, false);
|
|
185
|
-
assert.equal(dep.licenses.length, 0);
|
|
186
|
-
assert.equal(dep.homepageUrl, undefined);
|
|
187
|
-
assert.equal(dep.repoUrl, undefined);
|
|
188
|
-
});
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
describe('addVersion()', () => {
|
|
193
|
-
const dep = new Dependency('name', '1.0.0', '---');
|
|
194
|
-
it('should add version if not exists', () => {
|
|
195
|
-
dep.addVersion('1.1.0');
|
|
196
|
-
assert.deepEqual(dep.versions, ['1.0.0', '1.1.0']);
|
|
197
|
-
});
|
|
198
|
-
it('should not add version if it exists', () => {
|
|
199
|
-
dep.addVersion('1.1.0');
|
|
200
|
-
dep.addVersion('1.0.0');
|
|
201
|
-
assert.deepEqual(dep.versions, ['1.0.0', '1.1.0']);
|
|
202
|
-
});
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
describe('getVersion()', () => {
|
|
206
|
-
const dep = new Dependency('name', '3.0.0', '---');
|
|
207
|
-
it('should sort versions in ascending order', () => {
|
|
208
|
-
dep.addVersion('1.1.0');
|
|
209
|
-
dep.addVersion('1.0.0');
|
|
210
|
-
assert.deepEqual(dep.versions, ['1.0.0', '1.1.0', '3.0.0']);
|
|
211
|
-
});
|
|
212
|
-
it('should sort versions invalid versions at the beginning', () => {
|
|
213
|
-
dep.addVersion('karl');
|
|
214
|
-
assert.deepEqual(dep.versions, ['karl', '1.0.0', '1.1.0', '3.0.0']);
|
|
215
|
-
});
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
describe('getFirstByName()', () => {
|
|
219
|
-
const target = new Dependency('target', '1.0', '---');
|
|
220
|
-
const deps = [new Dependency('name', '1.0', '---'), new Dependency('other', '2.0', '---'), target];
|
|
221
|
-
const depsObj = { name: deps[0], other: deps[1], target };
|
|
222
|
-
|
|
223
|
-
it('should return undefined if not found', () => {
|
|
224
|
-
assert.equal(Dependency.getFirstByName(deps, 'unknown'), undefined);
|
|
225
|
-
});
|
|
226
|
-
it('should find by name', () => {
|
|
227
|
-
assert.deepEqual(Dependency.getFirstByName(deps, 'target'), target);
|
|
228
|
-
});
|
|
229
|
-
it('should find by reference', () => {
|
|
230
|
-
assert.deepEqual(Dependency.getFirstByName(deps, target), target);
|
|
231
|
-
});
|
|
232
|
-
it('should return undefined if not found in Object', () => {
|
|
233
|
-
assert.equal(Dependency.getFirstByName(depsObj, 'unknown'), undefined);
|
|
234
|
-
});
|
|
235
|
-
it('should find by name in Object', () => {
|
|
236
|
-
assert.deepEqual(Dependency.getFirstByName(depsObj, 'target'), target);
|
|
237
|
-
});
|
|
238
|
-
it('should find by reference in Object', () => {
|
|
239
|
-
assert.deepEqual(Dependency.getFirstByName(depsObj, target), target);
|
|
240
|
-
});
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
describe('addDependency()', () => {
|
|
244
|
-
let target;
|
|
245
|
-
beforeEach(() => {
|
|
246
|
-
target = new Dependency('target', '1.0', '---');
|
|
247
|
-
});
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
it('should throw TypeError if child is not instance if Dependency', () => {
|
|
251
|
-
assert.throws(() => {
|
|
252
|
-
target.addDependency('Test');
|
|
253
|
-
}, TypeError);
|
|
254
|
-
});
|
|
255
|
-
|
|
256
|
-
it('should add child nodes to array', () => {
|
|
257
|
-
const child1 = new Dependency('child1', '1.0', '---');
|
|
258
|
-
const child2 = new Dependency('child2', '1.0', '---');
|
|
259
|
-
|
|
260
|
-
target.addDependency(child1);
|
|
261
|
-
target.addDependency(child2);
|
|
262
|
-
|
|
263
|
-
assert.equal(target.dependencies[0], child1);
|
|
264
|
-
assert.equal(target.dependencies[1], child2);
|
|
265
|
-
});
|
|
266
|
-
|
|
267
|
-
it('should add not at child if it is already member of array', () => {
|
|
268
|
-
const child1 = new Dependency('child1', '1.0', '---');
|
|
269
|
-
|
|
270
|
-
target.addDependency(child1);
|
|
271
|
-
target.addDependency(child1);
|
|
272
|
-
|
|
273
|
-
assert.equal(target.dependencies.length, 1);
|
|
274
|
-
assert.equal(target.dependencies[0], child1);
|
|
275
|
-
});
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
describe('addDependencies()', () => {
|
|
279
|
-
let target;
|
|
280
|
-
|
|
281
|
-
beforeEach(() => {
|
|
282
|
-
target = new Dependency('target', '1.0', '---');
|
|
283
|
-
});
|
|
284
|
-
|
|
285
|
-
const child1 = new Dependency('child1', '1.0.0', '---');
|
|
286
|
-
const child2 = new Dependency('child2', '1.0.0', '---');
|
|
287
|
-
|
|
288
|
-
it('should throw TypeError and add nothing if one child is not of type Dependency', () => {
|
|
289
|
-
assert.throws(() => {
|
|
290
|
-
target.addDependencies(new Dependency('child1', '1.0.0', '---'), 'Test');
|
|
291
|
-
}, TypeError);
|
|
292
|
-
assert.equal(target.dependencies.length, 0);
|
|
293
|
-
});
|
|
294
|
-
|
|
295
|
-
it('should accept argument list as childs parameter', () => {
|
|
296
|
-
target.addDependencies(child1, child2);
|
|
297
|
-
assert.equal(target.dependencies.length, 2);
|
|
298
|
-
assert.equal(target.dependencies[0], child1);
|
|
299
|
-
assert.equal(target.dependencies[1], child2);
|
|
300
|
-
});
|
|
301
|
-
|
|
302
|
-
it('should accept argument list as array parameter', () => {
|
|
303
|
-
target.addDependencies([child1, child2]);
|
|
304
|
-
assert.equal(target.dependencies.length, 2);
|
|
305
|
-
assert.equal(target.dependencies[0], child1);
|
|
306
|
-
assert.equal(target.dependencies[1], child2);
|
|
307
|
-
});
|
|
308
|
-
});
|
|
309
|
-
});
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**********************************************************
|
|
3
|
+
* Copyright (c) 2017. Enterprise Architecture Group, EACG
|
|
4
|
+
*
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
*********************************************************/
|
|
7
|
+
/* eslint-enable */
|
|
8
|
+
/* eslint-env mocha */
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
const assert = require('assert');
|
|
12
|
+
const Dependency = require('../lib/dependency');
|
|
13
|
+
|
|
14
|
+
/* eslint-disable no-new, no-new-wrappers */
|
|
15
|
+
describe('Dependency', () => {
|
|
16
|
+
describe('Constructor', () => {
|
|
17
|
+
it('should set key with "system" as prefix for name', () => {
|
|
18
|
+
assert.equal(new Dependency('karl', '---', 'npm').key, 'npm:karl');
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it('should set name, version, description, homepageUrl and repoUrl', () => {
|
|
22
|
+
const dep = new Dependency('name', 'version', '---', 'description', '---', '---', 'home', 'repo');
|
|
23
|
+
assert.equal(dep.name, 'name');
|
|
24
|
+
assert.deepEqual(dep.versions, ['version']);
|
|
25
|
+
assert.equal(dep.description, 'description');
|
|
26
|
+
assert.equal(dep.homepageUrl, 'home');
|
|
27
|
+
assert.equal(dep.repoUrl, 'repo');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('should set private even if undefined', () => {
|
|
31
|
+
assert.equal(new Dependency('name', 'version', '---', 'descr', true).private, true);
|
|
32
|
+
assert.equal(new Dependency('name', 'version', '---', 'descr', false).private, false);
|
|
33
|
+
assert.equal(new Dependency('name', 'version', '---', 'descr', undefined).private, false);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('should set license as object', () => {
|
|
37
|
+
assert.deepEqual(new Dependency('---', '---', '---', '', true, 'MIT').licenses[0], { name: 'MIT' });
|
|
38
|
+
assert.deepEqual(new Dependency('---', '---', '---', '', true, { type: 'MIT' }).licenses[0], { name: 'MIT' });
|
|
39
|
+
assert.deepEqual(
|
|
40
|
+
new Dependency('---', '---', '---', '', true, { type: 'MIT', url: 'https://test' }).licenses[0],
|
|
41
|
+
{ name: 'MIT', url: 'https://test' }
|
|
42
|
+
);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('should set license as array', () => {
|
|
46
|
+
assert.deepEqual(
|
|
47
|
+
new Dependency('---', '---', '---', '', true, ['MIT', 'Apache']).licenses,
|
|
48
|
+
[{ name: 'MIT' }, { name: 'Apache' }]
|
|
49
|
+
);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('should set license as array of objects', () => {
|
|
53
|
+
assert.deepEqual(
|
|
54
|
+
new Dependency('---', '---', '---', '', true, [{ type: 'MIT', url: 'url' }, { type: 'Apache' }]).licenses,
|
|
55
|
+
[{ name: 'MIT', url: 'url' }, { name: 'Apache' }]
|
|
56
|
+
);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('should not accept empty or invalid name', () => {
|
|
60
|
+
assert.throws(() => {
|
|
61
|
+
new Dependency();
|
|
62
|
+
}, Error);
|
|
63
|
+
assert.throws(() => {
|
|
64
|
+
new Dependency(undefined);
|
|
65
|
+
}, Error);
|
|
66
|
+
assert.throws(() => {
|
|
67
|
+
new Dependency(null);
|
|
68
|
+
}, Error);
|
|
69
|
+
assert.throws(() => {
|
|
70
|
+
new Dependency('');
|
|
71
|
+
}, Error);
|
|
72
|
+
assert.throws(() => {
|
|
73
|
+
new Dependency(new String());
|
|
74
|
+
}, Error);
|
|
75
|
+
assert.throws(() => {
|
|
76
|
+
new Dependency(new String(''));
|
|
77
|
+
}, Error);
|
|
78
|
+
assert.throws(() => {
|
|
79
|
+
new Dependency(1234);
|
|
80
|
+
}, Error);
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
it('should accept literal or String object as name', () => {
|
|
84
|
+
assert.doesNotThrow(() => {
|
|
85
|
+
assert.equal(new Dependency('name', '---', '---').name, 'name');
|
|
86
|
+
}, Error);
|
|
87
|
+
assert.doesNotThrow(() => {
|
|
88
|
+
assert.equal(new Dependency(new String('name'), '---', '---').name, 'name');
|
|
89
|
+
}, Error);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('should not accept empty or invalid version', () => {
|
|
93
|
+
assert.throws(() => {
|
|
94
|
+
new Dependency('name');
|
|
95
|
+
}, Error);
|
|
96
|
+
assert.throws(() => {
|
|
97
|
+
new Dependency('name', undefined);
|
|
98
|
+
}, Error);
|
|
99
|
+
assert.throws(() => {
|
|
100
|
+
new Dependency('name', null);
|
|
101
|
+
}, Error);
|
|
102
|
+
assert.throws(() => {
|
|
103
|
+
new Dependency('name', '');
|
|
104
|
+
}, Error);
|
|
105
|
+
assert.throws(() => {
|
|
106
|
+
new Dependency('name', new String());
|
|
107
|
+
}, Error);
|
|
108
|
+
assert.throws(() => {
|
|
109
|
+
new Dependency('name', new String(''));
|
|
110
|
+
}, Error);
|
|
111
|
+
assert.throws(() => {
|
|
112
|
+
new Dependency('name', new Date());
|
|
113
|
+
}, Error);
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it('should accept literal or String object as version', () => {
|
|
117
|
+
assert.deepEqual(new Dependency('----', 'version', '---').versions, ['version']);
|
|
118
|
+
assert.deepEqual(new Dependency('---', new String('version'), '---').versions, ['version']);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it('should not accept empty or invalid key-prefix', () => {
|
|
122
|
+
assert.throws(() => {
|
|
123
|
+
new Dependency('name', 'version');
|
|
124
|
+
}, Error);
|
|
125
|
+
assert.throws(() => {
|
|
126
|
+
new Dependency('name', 'version', undefined);
|
|
127
|
+
}, Error);
|
|
128
|
+
assert.throws(() => {
|
|
129
|
+
new Dependency('name', 'version', null);
|
|
130
|
+
}, Error);
|
|
131
|
+
assert.throws(() => {
|
|
132
|
+
new Dependency('name', 'version', '');
|
|
133
|
+
}, Error);
|
|
134
|
+
assert.throws(() => {
|
|
135
|
+
new Dependency('name', 'version', new String());
|
|
136
|
+
}, Error);
|
|
137
|
+
assert.throws(() => {
|
|
138
|
+
new Dependency('name', 'version', new String(''));
|
|
139
|
+
}, Error);
|
|
140
|
+
assert.throws(() => {
|
|
141
|
+
new Dependency('name', 'version', new Number(3));
|
|
142
|
+
}, Error);
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
it('should accept literal or String object as key-prefix', () => {
|
|
146
|
+
assert.deepEqual(new Dependency('name', '---', 'xxx').key, 'xxx:name');
|
|
147
|
+
assert.deepEqual(new Dependency('name', '---', new String('xxx')).key, 'xxx:name');
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
it('should extract additional repo-protocol from url', () => {
|
|
151
|
+
assert.deepEqual(
|
|
152
|
+
new Dependency(
|
|
153
|
+
'name',
|
|
154
|
+
'version',
|
|
155
|
+
'---',
|
|
156
|
+
'description',
|
|
157
|
+
'---',
|
|
158
|
+
'---',
|
|
159
|
+
'home',
|
|
160
|
+
'git+https://github.com/eacg-gmbh/ecs-grunt-plugin.git'
|
|
161
|
+
).repoUrl,
|
|
162
|
+
'https://github.com/eacg-gmbh/ecs-grunt-plugin.git'
|
|
163
|
+
);
|
|
164
|
+
assert.deepEqual(
|
|
165
|
+
new Dependency(
|
|
166
|
+
'name',
|
|
167
|
+
'version',
|
|
168
|
+
'---',
|
|
169
|
+
'description',
|
|
170
|
+
'---',
|
|
171
|
+
'---',
|
|
172
|
+
'home',
|
|
173
|
+
'svn+http://svnrepo.com/test.svn'
|
|
174
|
+
).repoUrl,
|
|
175
|
+
'http://svnrepo.com/test.svn'
|
|
176
|
+
);
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
it('should set defaults', () => {
|
|
181
|
+
const dep = new Dependency('name', 'version', '---');
|
|
182
|
+
assert.deepEqual(dep.versions, ['version']);
|
|
183
|
+
assert.equal(dep.description, undefined);
|
|
184
|
+
assert.equal(dep.private, false);
|
|
185
|
+
assert.equal(dep.licenses.length, 0);
|
|
186
|
+
assert.equal(dep.homepageUrl, undefined);
|
|
187
|
+
assert.equal(dep.repoUrl, undefined);
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
describe('addVersion()', () => {
|
|
193
|
+
const dep = new Dependency('name', '1.0.0', '---');
|
|
194
|
+
it('should add version if not exists', () => {
|
|
195
|
+
dep.addVersion('1.1.0');
|
|
196
|
+
assert.deepEqual(dep.versions, ['1.0.0', '1.1.0']);
|
|
197
|
+
});
|
|
198
|
+
it('should not add version if it exists', () => {
|
|
199
|
+
dep.addVersion('1.1.0');
|
|
200
|
+
dep.addVersion('1.0.0');
|
|
201
|
+
assert.deepEqual(dep.versions, ['1.0.0', '1.1.0']);
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
describe('getVersion()', () => {
|
|
206
|
+
const dep = new Dependency('name', '3.0.0', '---');
|
|
207
|
+
it('should sort versions in ascending order', () => {
|
|
208
|
+
dep.addVersion('1.1.0');
|
|
209
|
+
dep.addVersion('1.0.0');
|
|
210
|
+
assert.deepEqual(dep.versions, ['1.0.0', '1.1.0', '3.0.0']);
|
|
211
|
+
});
|
|
212
|
+
it('should sort versions invalid versions at the beginning', () => {
|
|
213
|
+
dep.addVersion('karl');
|
|
214
|
+
assert.deepEqual(dep.versions, ['karl', '1.0.0', '1.1.0', '3.0.0']);
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
describe('getFirstByName()', () => {
|
|
219
|
+
const target = new Dependency('target', '1.0', '---');
|
|
220
|
+
const deps = [new Dependency('name', '1.0', '---'), new Dependency('other', '2.0', '---'), target];
|
|
221
|
+
const depsObj = { name: deps[0], other: deps[1], target };
|
|
222
|
+
|
|
223
|
+
it('should return undefined if not found', () => {
|
|
224
|
+
assert.equal(Dependency.getFirstByName(deps, 'unknown'), undefined);
|
|
225
|
+
});
|
|
226
|
+
it('should find by name', () => {
|
|
227
|
+
assert.deepEqual(Dependency.getFirstByName(deps, 'target'), target);
|
|
228
|
+
});
|
|
229
|
+
it('should find by reference', () => {
|
|
230
|
+
assert.deepEqual(Dependency.getFirstByName(deps, target), target);
|
|
231
|
+
});
|
|
232
|
+
it('should return undefined if not found in Object', () => {
|
|
233
|
+
assert.equal(Dependency.getFirstByName(depsObj, 'unknown'), undefined);
|
|
234
|
+
});
|
|
235
|
+
it('should find by name in Object', () => {
|
|
236
|
+
assert.deepEqual(Dependency.getFirstByName(depsObj, 'target'), target);
|
|
237
|
+
});
|
|
238
|
+
it('should find by reference in Object', () => {
|
|
239
|
+
assert.deepEqual(Dependency.getFirstByName(depsObj, target), target);
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
describe('addDependency()', () => {
|
|
244
|
+
let target;
|
|
245
|
+
beforeEach(() => {
|
|
246
|
+
target = new Dependency('target', '1.0', '---');
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
it('should throw TypeError if child is not instance if Dependency', () => {
|
|
251
|
+
assert.throws(() => {
|
|
252
|
+
target.addDependency('Test');
|
|
253
|
+
}, TypeError);
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
it('should add child nodes to array', () => {
|
|
257
|
+
const child1 = new Dependency('child1', '1.0', '---');
|
|
258
|
+
const child2 = new Dependency('child2', '1.0', '---');
|
|
259
|
+
|
|
260
|
+
target.addDependency(child1);
|
|
261
|
+
target.addDependency(child2);
|
|
262
|
+
|
|
263
|
+
assert.equal(target.dependencies[0], child1);
|
|
264
|
+
assert.equal(target.dependencies[1], child2);
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
it('should add not at child if it is already member of array', () => {
|
|
268
|
+
const child1 = new Dependency('child1', '1.0', '---');
|
|
269
|
+
|
|
270
|
+
target.addDependency(child1);
|
|
271
|
+
target.addDependency(child1);
|
|
272
|
+
|
|
273
|
+
assert.equal(target.dependencies.length, 1);
|
|
274
|
+
assert.equal(target.dependencies[0], child1);
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
describe('addDependencies()', () => {
|
|
279
|
+
let target;
|
|
280
|
+
|
|
281
|
+
beforeEach(() => {
|
|
282
|
+
target = new Dependency('target', '1.0', '---');
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
const child1 = new Dependency('child1', '1.0.0', '---');
|
|
286
|
+
const child2 = new Dependency('child2', '1.0.0', '---');
|
|
287
|
+
|
|
288
|
+
it('should throw TypeError and add nothing if one child is not of type Dependency', () => {
|
|
289
|
+
assert.throws(() => {
|
|
290
|
+
target.addDependencies(new Dependency('child1', '1.0.0', '---'), 'Test');
|
|
291
|
+
}, TypeError);
|
|
292
|
+
assert.equal(target.dependencies.length, 0);
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
it('should accept argument list as childs parameter', () => {
|
|
296
|
+
target.addDependencies(child1, child2);
|
|
297
|
+
assert.equal(target.dependencies.length, 2);
|
|
298
|
+
assert.equal(target.dependencies[0], child1);
|
|
299
|
+
assert.equal(target.dependencies[1], child2);
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
it('should accept argument list as array parameter', () => {
|
|
303
|
+
target.addDependencies([child1, child2]);
|
|
304
|
+
assert.equal(target.dependencies.length, 2);
|
|
305
|
+
assert.equal(target.dependencies[0], child1);
|
|
306
|
+
assert.equal(target.dependencies[1], child2);
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
});
|