@@ -209,8 +209,8 @@ async function createMockCache() {
209
209
fs . ensureDir ( tmpDir )
210
210
211
211
return {
212
- get : jest . fn ( ) ,
213
- set : jest . fn ( ) ,
212
+ get : jest . fn ( ( ) => Promise . resolve ( null ) ) ,
213
+ set : jest . fn ( ( ) => Promise . resolve ( null ) ) ,
214
214
directory : tmpDir ,
215
215
}
216
216
}
@@ -445,6 +445,123 @@ describe(`fetch-remote-file`, () => {
445
445
expect ( fsMove ) . toBeCalledTimes ( 0 )
446
446
} )
447
447
448
+ it ( `downloading a file in main process after downloading it in worker` , async ( ) => {
449
+ // we don't want to wait for polling to finish
450
+ jest . useFakeTimers ( )
451
+ jest . runAllTimers ( )
452
+
453
+ const cacheInternals = new Map ( )
454
+ const workerCache = {
455
+ get ( key ) {
456
+ return Promise . resolve ( cacheInternals . get ( key ) )
457
+ } ,
458
+ set ( key , value ) {
459
+ return Promise . resolve ( cacheInternals . set ( key , value ) )
460
+ } ,
461
+ directory : cache . directory ,
462
+ }
463
+
464
+ const fetchRemoteFileInstanceOne = getFetchInWorkerContext ( `1` )
465
+
466
+ const resultFromWorker = await fetchRemoteFileInstanceOne ( {
467
+ url : `http://external.com/logo.svg` ,
468
+ cache : workerCache ,
469
+ } )
470
+
471
+ jest . runAllTimers ( )
472
+
473
+ const resultFromMain = await fetchRemoteFile ( {
474
+ url : `http://external.com/logo.svg` ,
475
+ cache : workerCache ,
476
+ } )
477
+
478
+ expect ( resultFromWorker ) . not . toBeUndefined ( )
479
+ expect ( resultFromMain ) . not . toBeUndefined ( )
480
+
481
+ jest . useRealTimers ( )
482
+
483
+ expect ( gotStream ) . toBeCalledTimes ( 1 )
484
+ expect ( fsMove ) . toBeCalledTimes ( 1 )
485
+ } )
486
+
487
+ it ( `downloading a file in worker process after downloading it in main` , async ( ) => {
488
+ // we don't want to wait for polling to finish
489
+ jest . useFakeTimers ( )
490
+ jest . runAllTimers ( )
491
+
492
+ const cacheInternals = new Map ( )
493
+ const workerCache = {
494
+ get ( key ) {
495
+ return Promise . resolve ( cacheInternals . get ( key ) )
496
+ } ,
497
+ set ( key , value ) {
498
+ return Promise . resolve ( cacheInternals . set ( key , value ) )
499
+ } ,
500
+ directory : cache . directory ,
501
+ }
502
+
503
+ const fetchRemoteFileInstanceOne = getFetchInWorkerContext ( `1` )
504
+
505
+ const resultFromMain = await fetchRemoteFile ( {
506
+ url : `http://external.com/logo.svg` ,
507
+ cache : workerCache ,
508
+ } )
509
+
510
+ jest . runAllTimers ( )
511
+
512
+ const resultFromWorker = await fetchRemoteFileInstanceOne ( {
513
+ url : `http://external.com/logo.svg` ,
514
+ cache : workerCache ,
515
+ } )
516
+
517
+ jest . runAllTimers ( )
518
+ jest . useRealTimers ( )
519
+
520
+ expect ( resultFromWorker ) . not . toBeUndefined ( )
521
+ expect ( resultFromMain ) . not . toBeUndefined ( )
522
+ expect ( gotStream ) . toBeCalledTimes ( 1 )
523
+ expect ( fsMove ) . toBeCalledTimes ( 1 )
524
+ } )
525
+
526
+ it ( `downloading a file in worker process after downloading it in another worker` , async ( ) => {
527
+ // we don't want to wait for polling to finish
528
+ jest . useFakeTimers ( )
529
+ jest . runAllTimers ( )
530
+
531
+ const cacheInternals = new Map ( )
532
+ const workerCache = {
533
+ get ( key ) {
534
+ return Promise . resolve ( cacheInternals . get ( key ) )
535
+ } ,
536
+ set ( key , value ) {
537
+ return Promise . resolve ( cacheInternals . set ( key , value ) )
538
+ } ,
539
+ directory : cache . directory ,
540
+ }
541
+
542
+ const fetchRemoteFileInstanceOne = getFetchInWorkerContext ( `1` )
543
+ const fetchRemoteFileInstanceTwo = getFetchInWorkerContext ( `2` )
544
+
545
+ const resultFromWorker1 = await fetchRemoteFileInstanceOne ( {
546
+ url : `http://external.com/logo.svg` ,
547
+ cache : workerCache ,
548
+ } )
549
+ jest . runAllTimers ( )
550
+
551
+ const resultFromWorker2 = await fetchRemoteFileInstanceTwo ( {
552
+ url : `http://external.com/logo.svg` ,
553
+ cache : workerCache ,
554
+ } )
555
+
556
+ jest . runAllTimers ( )
557
+ jest . useRealTimers ( )
558
+
559
+ expect ( resultFromWorker1 ) . not . toBeUndefined ( )
560
+ expect ( resultFromWorker2 ) . not . toBeUndefined ( )
561
+ expect ( gotStream ) . toBeCalledTimes ( 1 )
562
+ expect ( fsMove ) . toBeCalledTimes ( 1 )
563
+ } )
564
+
448
565
it ( `fails when 404 is triggered` , async ( ) => {
449
566
await expect (
450
567
fetchRemoteFile ( {
0 commit comments