@@ -469,11 +469,20 @@ export const b = new A();`);
469
469
470
470
describe ( "unittests:: tsbuild - baseline sectioned sourcemaps" , ( ) => {
471
471
let fs : vfs . FileSystem | undefined ;
472
+ const actualReadFileMap = createMap < number > ( ) ;
472
473
before ( ( ) => {
473
474
fs = outFileFs . shadow ( ) ;
474
475
const host = new fakes . SolutionBuilderHost ( fs ) ;
475
476
const builder = createSolutionBuilder ( host , [ "/src/third" ] , { dry : false , force : false , verbose : false } ) ;
476
477
host . clearDiagnostics ( ) ;
478
+ const originalReadFile = host . readFile ;
479
+ host . readFile = path => {
480
+ // Dont record libs
481
+ if ( path . startsWith ( "/src/" ) ) {
482
+ actualReadFileMap . set ( path , ( actualReadFileMap . get ( path ) || 0 ) + 1 ) ;
483
+ }
484
+ return originalReadFile . call ( host , path ) ;
485
+ } ;
477
486
builder . buildAllProjects ( ) ;
478
487
host . assertDiagnosticMessages ( /*none*/ ) ;
479
488
} ) ;
@@ -485,6 +494,39 @@ export const b = new A();`);
485
494
// tslint:disable-next-line:no-null-keyword
486
495
Harness . Baseline . runBaseline ( "outfile-concat.js" , patch ? vfs . formatPatch ( patch ) : null ) ;
487
496
} ) ;
497
+ it ( "verify readFile calls" , ( ) => {
498
+ const expectedMap = createMap < number > ( ) ;
499
+ // Configs
500
+ expectedMap . set ( "/src/third/tsconfig.json" , 1 ) ;
501
+ expectedMap . set ( "/src/second/tsconfig.json" , 1 ) ;
502
+ expectedMap . set ( "/src/first/tsconfig.json" , 1 ) ;
503
+
504
+ // Source files
505
+ expectedMap . set ( "/src/third/third_part1.ts" , 1 ) ;
506
+ expectedMap . set ( "/src/second/second_part1.ts" , 1 ) ;
507
+ expectedMap . set ( "/src/second/second_part2.ts" , 1 ) ;
508
+ expectedMap . set ( "/src/first/first_PART1.ts" , 1 ) ;
509
+ expectedMap . set ( "/src/first/first_part2.ts" , 1 ) ;
510
+ expectedMap . set ( "/src/first/first_part3.ts" , 1 ) ;
511
+
512
+ // outputs
513
+ expectedMap . set ( "/src/first/bin/first-output.js" , 2 ) ;
514
+ expectedMap . set ( "/src/first/bin/first-output.js.map" , 2 ) ;
515
+ // 1 for reading source File, 2 for forEachEmittedFiles (verifying compiler Options and actual emit)when prepend array is created
516
+ expectedMap . set ( "/src/first/bin/first-output.d.ts" , 3 ) ;
517
+ expectedMap . set ( "/src/first/bin/first-output.d.ts.map" , 2 ) ;
518
+ expectedMap . set ( "/src/2/second-output.js" , 2 ) ;
519
+ expectedMap . set ( "/src/2/second-output.js.map" , 2 ) ;
520
+ // 1 for reading source File, 2 for forEachEmittedFiles (verifying compiler Options and actual emit)when prepend array is created
521
+ expectedMap . set ( "/src/2/second-output.d.ts" , 3 ) ;
522
+ expectedMap . set ( "/src/2/second-output.d.ts.map" , 2 ) ;
523
+
524
+ assert . equal ( actualReadFileMap . size , expectedMap . size , `Expected: ${ JSON . stringify ( arrayFrom ( expectedMap . entries ( ) ) ) } \nActual: ${ JSON . stringify ( arrayFrom ( actualReadFileMap . entries ( ) ) ) } ` ) ;
525
+ actualReadFileMap . forEach ( ( value , key ) => {
526
+ const expected = expectedMap . get ( key ) ;
527
+ assert . equal ( value , expected , `Expected: ${ JSON . stringify ( arrayFrom ( expectedMap . entries ( ) ) ) } \nActual: ${ JSON . stringify ( arrayFrom ( actualReadFileMap . entries ( ) ) ) } ` ) ;
528
+ } ) ;
529
+ } ) ;
488
530
} ) ;
489
531
490
532
describe ( "unittests:: tsbuild - downstream prepend projects always get rebuilt" , ( ) => {
0 commit comments