@@ -15,15 +15,7 @@ import {
15
15
chai . use ( chaiAsPromised )
16
16
chai . should ( )
17
17
18
- // TODO: after #46 merged, use:
19
- // const globPatternsPromise = setupSdk(FREE_API_KEY)
20
- // .then(sdk => sdk.getReportSupportedFiles())
21
- // .then(res => {
22
- // if (!res.success) throw new Error('failed to get API supported files')
23
- // return res.data
24
- // })
25
-
26
- const globPatternsPromise = Promise . resolve ( {
18
+ const globPatterns = {
27
19
general : {
28
20
readme : {
29
21
pattern : '*readme*'
@@ -70,14 +62,25 @@ const globPatternsPromise = Promise.resolve({
70
62
pattern : 'setup.py'
71
63
}
72
64
}
73
- } )
65
+ }
74
66
75
67
/**
76
- * @param {string } file
77
- * @returns {Promise<string[]> }
68
+ * @template {any[]} A
69
+ * @template R
70
+ * @template {(...args: A) => Promise<R[]>} Fn
71
+ * @param {Fn } fn
72
+ * @returns {Fn }
78
73
*/
79
- const mapGlobEntry = async ( file ) =>
80
- mapGlobEntryToFiles ( file , await globPatternsPromise )
74
+ const sortedPromise = ( fn ) => /** @type {Fn } */ ( async ( ...args ) => {
75
+ const result = await fn ( ...args )
76
+ return result . sort ( )
77
+ } )
78
+
79
+ const sortedMapGlobEntry = sortedPromise ( mapGlobEntryToFiles )
80
+
81
+ const sortedMapGlobResult = sortedPromise ( mapGlobResultToFiles )
82
+
83
+ const sortedGetPackageFiles = sortedPromise ( getPackageFiles )
81
84
82
85
describe ( 'Path Resolve' , ( ) => {
83
86
beforeEach ( ( ) => {
@@ -120,14 +123,14 @@ describe('Path Resolve', () => {
120
123
mockFs ( {
121
124
'/foo.txt' : 'some content' ,
122
125
} )
123
- await mapGlobEntry ( '/foo.txt' ) . should . eventually . become ( [ ] )
126
+ await sortedMapGlobEntry ( '/foo.txt' , globPatterns ) . should . eventually . become ( [ ] )
124
127
} )
125
128
126
129
it ( 'should throw on errors' , async ( ) => {
127
130
mockFs ( {
128
131
'/package.json' : { /* Empty directory */ } ,
129
132
} )
130
- await mapGlobEntry ( '/' )
133
+ await sortedMapGlobEntry ( '/' , globPatterns )
131
134
. should . eventually . be . rejectedWith ( InputError , 'Expected \'/package.json\' to be a file' )
132
135
} )
133
136
} )
@@ -138,32 +141,32 @@ describe('Path Resolve', () => {
138
141
'/package-lock.json' : '{}' ,
139
142
'/package.json' : '{}' ,
140
143
} )
141
- await mapGlobEntry ( '/' ) . should . eventually . become ( [
142
- '/package.json' ,
143
- '/package-lock .json'
144
+ await sortedMapGlobEntry ( '/' , globPatterns ) . should . eventually . become ( [
145
+ '/package-lock .json' ,
146
+ '/package.json'
144
147
] )
145
148
} )
146
149
147
150
it ( 'should resolve package without lock file' , async ( ) => {
148
151
mockFs ( {
149
152
'/package.json' : '{}' ,
150
153
} )
151
- await mapGlobEntry ( '/' ) . should . eventually . become ( [ '/package.json' ] )
154
+ await sortedMapGlobEntry ( '/' , globPatterns ) . should . eventually . become ( [ '/package.json' ] )
152
155
} )
153
156
154
157
it ( 'should not resolve lock file without package' , async ( ) => {
155
158
mockFs ( {
156
159
'/package-lock.json' : '{}' ,
157
160
} )
158
- await mapGlobEntry ( '/' ) . should . eventually . become ( [ ] )
161
+ await sortedMapGlobEntry ( '/' , globPatterns ) . should . eventually . become ( [ ] )
159
162
} )
160
163
161
164
it ( 'should support alternative lock files' , async ( ) => {
162
165
mockFs ( {
163
166
'/yarn.lock' : '{}' ,
164
167
'/package.json' : '{}' ,
165
168
} )
166
- await mapGlobEntry ( '/' ) . should . eventually . become ( [
169
+ await sortedMapGlobEntry ( '/' , globPatterns ) . should . eventually . become ( [
167
170
'/package.json' ,
168
171
'/yarn.lock'
169
172
] )
@@ -176,31 +179,31 @@ describe('Path Resolve', () => {
176
179
'/package-lock.json' : '{}' ,
177
180
'/package.json' : '{}' ,
178
181
} )
179
- await mapGlobEntry ( '/package.json' ) . should . eventually . become ( [
180
- '/package.json' ,
181
- '/package-lock .json'
182
+ await sortedMapGlobEntry ( '/package.json' , globPatterns ) . should . eventually . become ( [
183
+ '/package-lock .json' ,
184
+ '/package.json'
182
185
] )
183
186
} )
184
187
185
188
it ( 'should resolve package without lock file' , async ( ) => {
186
189
mockFs ( {
187
190
'/package.json' : '{}' ,
188
191
} )
189
- await mapGlobEntry ( '/package.json' ) . should . eventually . become ( [ '/package.json' ] )
192
+ await sortedMapGlobEntry ( '/package.json' , globPatterns ) . should . eventually . become ( [ '/package.json' ] )
190
193
} )
191
194
192
195
it ( 'should not validate the input file' , async ( ) => {
193
196
mockFs ( { } )
194
- await mapGlobEntry ( '/package.json' ) . should . eventually . become ( [ '/package.json' ] )
197
+ await sortedMapGlobEntry ( '/package.json' , globPatterns ) . should . eventually . become ( [ '/package.json' ] )
195
198
} )
196
199
197
200
it ( 'should not validate the input file, but still add a complementary lock file' , async ( ) => {
198
201
mockFs ( {
199
202
'/package-lock.json' : '{}' ,
200
203
} )
201
- await mapGlobEntry ( '/package.json' ) . should . eventually . become ( [
202
- '/package.json' ,
203
- '/package-lock .json'
204
+ await sortedMapGlobEntry ( '/package.json' , globPatterns ) . should . eventually . become ( [
205
+ '/package-lock .json' ,
206
+ '/package.json'
204
207
] )
205
208
} )
206
209
@@ -209,7 +212,7 @@ describe('Path Resolve', () => {
209
212
'/yarn.lock' : '{}' ,
210
213
'/package.json' : '{}' ,
211
214
} )
212
- await mapGlobEntry ( '/package.json' ) . should . eventually . become ( [
215
+ await sortedMapGlobEntry ( '/package.json' , globPatterns ) . should . eventually . become ( [
213
216
'/package.json' ,
214
217
'/yarn.lock'
215
218
] )
@@ -222,17 +225,9 @@ describe('Path Resolve', () => {
222
225
'/package-lock.json' : '{}' ,
223
226
'/package.json' : '{}' ,
224
227
} )
225
- await mapGlobEntry ( '/package-lock.json' ) . should . eventually . become ( [
226
- '/package.json' ,
227
- '/package-lock.json'
228
- ] )
229
- } )
230
-
231
- it ( 'should assume input is correct and paired with package file' , async ( ) => {
232
- mockFs ( { } )
233
- await mapGlobEntry ( '/package-lock.json' ) . should . eventually . become ( [
234
- '/package.json' ,
235
- '/package-lock.json'
228
+ await sortedMapGlobEntry ( '/package-lock.json' , globPatterns ) . should . eventually . become ( [
229
+ '/package-lock.json' ,
230
+ '/package.json'
236
231
] )
237
232
} )
238
233
@@ -241,7 +236,7 @@ describe('Path Resolve', () => {
241
236
'/yarn.lock' : '{}' ,
242
237
'/package.json' : '{}' ,
243
238
} )
244
- await mapGlobEntry ( '/yarn.lock' ) . should . eventually . become ( [
239
+ await sortedMapGlobEntry ( '/yarn.lock' , globPatterns ) . should . eventually . become ( [
245
240
'/package.json' ,
246
241
'/yarn.lock'
247
242
] )
@@ -261,20 +256,20 @@ describe('Path Resolve', () => {
261
256
'/abc/package.json' : '{}' ,
262
257
} )
263
258
264
- await mapGlobResultToFiles ( [
259
+ await sortedMapGlobResult ( [
265
260
'/' ,
266
261
'/foo/package-lock.json' ,
267
262
'/bar/package.json' ,
268
263
'/abc/' ,
269
264
'/abc/package.json'
270
- ] ) . should . eventually . become ( [
271
- '/package.json' ,
272
- '/package-lock.json' ,
273
- '/foo/package.json' ,
274
- '/foo/package-lock.json' ,
265
+ ] , globPatterns ) . should . eventually . become ( [
266
+ '/abc/package.json' ,
275
267
'/bar/package.json' ,
276
268
'/bar/yarn.lock' ,
277
- '/abc/package.json' ,
269
+ '/foo/package-lock.json' ,
270
+ '/foo/package.json' ,
271
+ '/package-lock.json' ,
272
+ '/package.json'
278
273
] )
279
274
} )
280
275
} )
@@ -291,19 +286,20 @@ describe('Path Resolve', () => {
291
286
'/abc/package.json' : '{}' ,
292
287
} )
293
288
294
- await getPackageFiles (
289
+ await sortedGetPackageFiles (
295
290
'/' ,
296
291
[ '**/*' ] ,
297
292
undefined ,
293
+ globPatterns ,
298
294
( ) => { }
299
295
) . should . eventually . become ( [
300
296
'/abc/package.json' ,
301
297
'/bar/package.json' ,
302
298
'/bar/yarn.lock' ,
303
- '/foo/package.json' ,
304
299
'/foo/package-lock.json' ,
305
- '/package.json' ,
300
+ '/foo/ package.json' ,
306
301
'/package-lock.json' ,
302
+ '/package.json' ,
307
303
] )
308
304
} )
309
305
@@ -312,10 +308,11 @@ describe('Path Resolve', () => {
312
308
'/package.json' : '{}' ,
313
309
} )
314
310
315
- await getPackageFiles (
311
+ await sortedGetPackageFiles (
316
312
'/' ,
317
313
[ '.' ] ,
318
314
undefined ,
315
+ globPatterns ,
319
316
( ) => { }
320
317
) . should . eventually . become ( [
321
318
'/package.json' ,
@@ -330,7 +327,7 @@ describe('Path Resolve', () => {
330
327
'/foo/package.json' : '{}' ,
331
328
} )
332
329
333
- await getPackageFiles (
330
+ await sortedGetPackageFiles (
334
331
'/' ,
335
332
[ '**/*' ] ,
336
333
{
@@ -342,11 +339,12 @@ describe('Path Resolve', () => {
342
339
issueRules : { } ,
343
340
githubApp : { }
344
341
} ,
342
+ globPatterns ,
345
343
( ) => { }
346
344
) . should . eventually . become ( [
347
345
'/bar/package.json' ,
348
- '/foo/package.json' ,
349
346
'/foo/package-lock.json' ,
347
+ '/foo/package.json'
350
348
] )
351
349
} )
352
350
@@ -359,14 +357,15 @@ describe('Path Resolve', () => {
359
357
'/foo/package.json' : '{}' ,
360
358
} )
361
359
362
- await getPackageFiles (
360
+ await sortedGetPackageFiles (
363
361
'/' ,
364
362
[ '**/*' ] ,
365
363
undefined ,
364
+ globPatterns ,
366
365
( ) => { }
367
366
) . should . eventually . become ( [
368
- '/foo/package.json' ,
369
367
'/foo/package-lock.json' ,
368
+ '/foo/package.json'
370
369
] )
371
370
} )
372
371
@@ -385,14 +384,15 @@ describe('Path Resolve', () => {
385
384
'/foo/package.json' : '{}' ,
386
385
} )
387
386
388
- await getPackageFiles (
387
+ await sortedGetPackageFiles (
389
388
'/' ,
390
389
[ '**/*' ] ,
391
390
undefined ,
391
+ globPatterns ,
392
392
( ) => { }
393
393
) . should . eventually . become ( [
394
- '/foo/package.json' ,
395
394
'/foo/package-lock.json' ,
395
+ '/foo/package.json'
396
396
] )
397
397
} )
398
398
@@ -404,14 +404,15 @@ describe('Path Resolve', () => {
404
404
'/foo/random.json' : '{}' ,
405
405
} )
406
406
407
- await getPackageFiles (
407
+ await sortedGetPackageFiles (
408
408
'/' ,
409
409
[ '**/*' ] ,
410
410
undefined ,
411
+ globPatterns ,
411
412
( ) => { }
412
413
) . should . eventually . become ( [
413
- '/foo/package.json' ,
414
414
'/foo/package-lock.json' ,
415
+ '/foo/package.json'
415
416
] )
416
417
} )
417
418
} )
0 commit comments