@@ -331,21 +331,22 @@ interface Symbol {
331
331
( originalWriteFile || sys . writeFile ) . call ( sys , `${ buildInfoPath } .baseline.txt` , text ) ;
332
332
}
333
333
334
- interface VerifyIncrementalCorrectness {
334
+ interface VerifyTscEditCorrectnessInput {
335
335
scenario : TestTscCompile [ "scenario" ] ;
336
336
commandLineArgs : TestTscCompile [ "commandLineArgs" ] ;
337
337
modifyFs : TestTscCompile [ "modifyFs" ] ;
338
- incrementalModifyFs : TscIncremental [ "modifyFs" ] ;
338
+ editFs : TestTscEdit [ "modifyFs" ] ;
339
339
tick : ( ) => void ;
340
340
baseFs : vfs . FileSystem ;
341
341
newSys : TscCompileSystem ;
342
- cleanBuildDiscrepancies : TscIncremental [ "cleanBuildDiscrepancies" ] ;
342
+ cleanBuildDiscrepancies : TestTscEdit [ "cleanBuildDiscrepancies" ] ;
343
343
}
344
- function verifyIncrementalCorrectness ( input : ( ) => VerifyIncrementalCorrectness , index : number , subScenario : TestTscCompile [ "subScenario" ] ) {
345
- it ( `Verify emit output file text is same when built clean for incremental scenario at:: ${ index } ${ subScenario } ` , ( ) => {
344
+ /** Verify that emit is same as clean build vs building after edit */
345
+ function verifyTscEditCorrectness ( input : ( ) => VerifyTscEditCorrectnessInput , index : number , subScenario : TestTscCompile [ "subScenario" ] ) {
346
+ it ( `Verify emit output file text is same when built clean for incremental edit scenario at:: ${ index } ${ subScenario } ` , ( ) => {
346
347
const {
347
348
scenario, commandLineArgs, cleanBuildDiscrepancies,
348
- modifyFs, incrementalModifyFs ,
349
+ modifyFs, editFs ,
349
350
tick, baseFs, newSys
350
351
} = input ( ) ;
351
352
const sys = testTscCompile ( {
@@ -356,7 +357,7 @@ interface Symbol {
356
357
modifyFs : fs => {
357
358
tick ( ) ;
358
359
if ( modifyFs ) modifyFs ( fs ) ;
359
- incrementalModifyFs ( fs ) ;
360
+ editFs ( fs ) ;
360
361
} ,
361
362
disableUseFileVersionAsSignature : true ,
362
363
} ) ;
@@ -498,136 +499,45 @@ interface Symbol {
498
499
CleanFilePresent ,
499
500
}
500
501
501
- export interface TscIncremental {
502
- buildKind : BuildKind ;
502
+ export interface TestTscEdit {
503
503
modifyFs : ( fs : vfs . FileSystem ) => void ;
504
- subScenario ? : string ;
504
+ subScenario : string ;
505
505
commandLineArgs ?: readonly string [ ] ;
506
506
cleanBuildDiscrepancies ?: ( ) => ESMap < string , CleanBuildDescrepancy > ;
507
507
}
508
508
509
- export interface VerifyTsBuildInput extends VerifyTsBuildInputWorker {
509
+ export interface VerifyTscWithEditsInput extends VerifyTscWithEditsWorkerInput {
510
510
baselineIncremental ?: boolean ;
511
511
}
512
-
513
- export function verifyTscIncrementalEdits ( input : VerifyTsBuildInput ) {
514
- verifyTscIncrementalEditsWorker ( input ) ;
515
- if ( input . baselineIncremental ) {
516
- verifyTscIncrementalEditsWorker ( {
517
- ...input ,
518
- subScenario : `${ input . subScenario } with incremental` ,
519
- commandLineArgs : [ ...input . commandLineArgs , "--incremental" ] ,
520
- } ) ;
521
- }
522
- }
523
-
524
- export interface VerifyTsBuildInputWorker extends TestTscCompile {
525
- incrementalScenarios : TscIncremental [ ] ;
526
- }
527
- function verifyTscIncrementalEditsWorker ( {
528
- subScenario, fs, scenario, commandLineArgs,
529
- baselineSourceMap, modifyFs, baselineReadFileCalls, baselinePrograms,
530
- incrementalScenarios
531
- } : VerifyTsBuildInputWorker ) {
532
- describe ( `tsc ${ commandLineArgs . join ( " " ) } ${ scenario } :: ${ subScenario } ` , ( ) => {
533
- let tick : ( ) => void ;
534
- let sys : TscCompileSystem ;
535
- let baseFs : vfs . FileSystem ;
536
- before ( ( ) => {
537
- ( { fs : baseFs , tick } = getFsWithTime ( fs ( ) ) ) ;
538
- sys = testTscCompile ( {
539
- scenario,
540
- subScenario,
541
- fs : ( ) => baseFs . makeReadonly ( ) ,
542
- commandLineArgs,
543
- modifyFs : fs => {
544
- if ( modifyFs ) modifyFs ( fs ) ;
545
- tick ( ) ;
546
- } ,
547
- baselineSourceMap,
548
- baselineReadFileCalls,
549
- baselinePrograms
550
- } ) ;
551
- Debug . assert ( ! ! incrementalScenarios . length , `${ scenario } /${ subScenario } :: No incremental scenarios, you probably want to use verifyTsc instead.` ) ;
552
- } ) ;
553
- after ( ( ) => {
554
- baseFs = undefined ! ;
555
- sys = undefined ! ;
556
- tick = undefined ! ;
557
- } ) ;
558
- describe ( "initialBuild" , ( ) => {
559
- verifyTscBaseline ( ( ) => sys ) ;
560
- } ) ;
561
-
562
- incrementalScenarios . forEach ( ( {
563
- buildKind,
564
- modifyFs : incrementalModifyFs ,
565
- subScenario : incrementalSubScenario ,
566
- commandLineArgs : incrementalCommandLineArgs ,
567
- cleanBuildDiscrepancies,
568
- } , index ) => {
569
- describe ( incrementalSubScenario || buildKind , ( ) => {
570
- let newSys : TscCompileSystem ;
571
- before ( ( ) => {
572
- Debug . assert ( buildKind !== BuildKind . Initial , "Incremental edit cannot be initial compilation" ) ;
573
- tick ( ) ;
574
- newSys = testTscCompile ( {
575
- scenario,
576
- subScenario : incrementalSubScenario || subScenario ,
577
- buildKind,
578
- fs : ( ) => sys . vfs ,
579
- commandLineArgs : incrementalCommandLineArgs || commandLineArgs ,
580
- modifyFs : fs => {
581
- tick ( ) ;
582
- incrementalModifyFs ( fs ) ;
583
- tick ( ) ;
584
- } ,
585
- baselineSourceMap,
586
- baselineReadFileCalls,
587
- baselinePrograms
588
- } ) ;
589
- } ) ;
590
- after ( ( ) => {
591
- newSys = undefined ! ;
592
- } ) ;
593
- verifyTscBaseline ( ( ) => newSys ) ;
594
- verifyIncrementalCorrectness ( ( ) => ( {
595
- scenario,
596
- baseFs,
597
- newSys,
598
- commandLineArgs : incrementalCommandLineArgs || commandLineArgs ,
599
- cleanBuildDiscrepancies,
600
- incrementalModifyFs,
601
- modifyFs,
602
- tick
603
- } ) , index , incrementalSubScenario || subScenario ) ;
604
- } ) ;
605
- } ) ;
606
- } ) ;
512
+ export interface VerifyTscWithEditsWorkerInput extends TestTscCompile {
513
+ edits : TestTscEdit [ ] ;
607
514
}
608
515
609
- export function verifyTscSerializedIncrementalEdits ( input : VerifyTsBuildInput ) {
610
- verifyTscSerializedIncrementalEditsWorker ( input ) ;
516
+ /**
517
+ * Verify non watch tsc invokcation after each edit
518
+ */
519
+ export function verifyTscWithEdits ( input : VerifyTscWithEditsInput ) {
520
+ verifyTscWithEditsWorker ( input ) ;
611
521
if ( input . baselineIncremental ) {
612
- verifyTscSerializedIncrementalEditsWorker ( {
522
+ verifyTscWithEditsWorker ( {
613
523
...input ,
614
524
subScenario : `${ input . subScenario } with incremental` ,
615
525
commandLineArgs : [ ...input . commandLineArgs , "--incremental" ] ,
616
526
} ) ;
617
527
}
618
528
}
619
- function verifyTscSerializedIncrementalEditsWorker ( {
529
+ function verifyTscWithEditsWorker ( {
620
530
subScenario, fs, scenario, commandLineArgs,
621
531
baselineSourceMap, modifyFs, baselineReadFileCalls, baselinePrograms,
622
- incrementalScenarios
623
- } : VerifyTsBuildInputWorker ) {
532
+ edits
533
+ } : VerifyTscWithEditsWorkerInput ) {
624
534
describe ( `tsc ${ commandLineArgs . join ( " " ) } ${ scenario } :: ${ subScenario } serializedEdits` , ( ) => {
625
- Debug . assert ( ! ! incrementalScenarios . length , `${ scenario } /${ subScenario } :: No incremental scenarios, you probably want to use verifyTsc instead.` ) ;
626
535
let tick : ( ) => void ;
627
536
let sys : TscCompileSystem ;
628
537
let baseFs : vfs . FileSystem ;
629
- let incrementalSys : TscCompileSystem [ ] ;
538
+ let editsSys : TscCompileSystem [ ] ;
630
539
before ( ( ) => {
540
+ Debug . assert ( ! ! edits . length , `${ scenario } /${ subScenario } :: No incremental scenarios, you probably want to use verifyTsc instead.` ) ;
631
541
( { fs : baseFs , tick } = getFsWithTime ( fs ( ) ) ) ;
632
542
sys = testTscCompile ( {
633
543
scenario,
@@ -642,18 +552,17 @@ interface Symbol {
642
552
baselineReadFileCalls,
643
553
baselinePrograms
644
554
} ) ;
645
- incrementalScenarios . forEach ( (
646
- { buildKind , modifyFs, subScenario : incrementalSubScenario , commandLineArgs : incrementalCommandLineArgs } ,
555
+ edits . forEach ( (
556
+ { modifyFs, subScenario : editScenario , commandLineArgs : editCommandLineArgs } ,
647
557
index
648
558
) => {
649
- Debug . assert ( buildKind !== BuildKind . Initial , "Incremental edit cannot be initial compilation" ) ;
650
559
tick ( ) ;
651
- ( incrementalSys || ( incrementalSys = [ ] ) ) . push ( testTscCompile ( {
560
+ ( editsSys || ( editsSys = [ ] ) ) . push ( testTscCompile ( {
652
561
scenario,
653
- subScenario : incrementalSubScenario || subScenario ,
654
- buildKind ,
655
- fs : ( ) => index === 0 ? sys . vfs : incrementalSys [ index - 1 ] . vfs ,
656
- commandLineArgs : incrementalCommandLineArgs || commandLineArgs ,
562
+ subScenario : editScenario || subScenario ,
563
+ diffWithInitial : true ,
564
+ fs : ( ) => index === 0 ? sys . vfs : editsSys [ index - 1 ] . vfs ,
565
+ commandLineArgs : editCommandLineArgs || commandLineArgs ,
657
566
modifyFs : fs => {
658
567
tick ( ) ;
659
568
modifyFs ( fs ) ;
@@ -669,39 +578,38 @@ interface Symbol {
669
578
baseFs = undefined ! ;
670
579
sys = undefined ! ;
671
580
tick = undefined ! ;
672
- incrementalSys = undefined ! ;
581
+ editsSys = undefined ! ;
673
582
} ) ;
674
- describe ( "serializedBuild" , ( ) => {
675
-
583
+ describe ( "tsc invocation after edit" , ( ) => {
676
584
verifyTscBaseline ( ( ) => ( {
677
585
baseLine : ( ) => {
678
586
const { file, text } = sys . baseLine ( ) ;
679
587
const texts : string [ ] = [ text ] ;
680
- incrementalSys . forEach ( ( sys , index ) => {
681
- const incrementalScenario = incrementalScenarios [ index ] ;
588
+ editsSys . forEach ( ( sys , index ) => {
589
+ const incrementalScenario = edits [ index ] ;
682
590
texts . push ( "" ) ;
683
- texts . push ( `Change:: ${ incrementalScenario . subScenario || incrementalScenario . buildKind } ` ) ;
591
+ texts . push ( `Change:: ${ incrementalScenario . subScenario } ` ) ;
684
592
texts . push ( sys . baseLine ( ) . text ) ;
685
593
} ) ;
686
594
return { file, text : texts . join ( "\r\n" ) } ;
687
595
}
688
596
} ) ) ;
689
597
} ) ;
690
- describe ( "incremental correctness" , ( ) => {
691
- incrementalScenarios . forEach ( ( { commandLineArgs : incrementalCommandLineArgs , subScenario, buildKind , cleanBuildDiscrepancies } , index ) => verifyIncrementalCorrectness ( ( ) => ( {
598
+ describe ( "tsc invocation after edit and clean build correctness" , ( ) => {
599
+ edits . forEach ( ( { commandLineArgs : editCommandLineArgs , subScenario, cleanBuildDiscrepancies } , index ) => verifyTscEditCorrectness ( ( ) => ( {
692
600
scenario,
693
601
baseFs,
694
- newSys : incrementalSys [ index ] ,
695
- commandLineArgs : incrementalCommandLineArgs || commandLineArgs ,
602
+ newSys : editsSys [ index ] ,
603
+ commandLineArgs : editCommandLineArgs || commandLineArgs ,
696
604
cleanBuildDiscrepancies,
697
- incrementalModifyFs : fs => {
605
+ editFs : fs => {
698
606
for ( let i = 0 ; i <= index ; i ++ ) {
699
- incrementalScenarios [ i ] . modifyFs ( fs ) ;
607
+ edits [ i ] . modifyFs ( fs ) ;
700
608
}
701
609
} ,
702
610
modifyFs,
703
611
tick
704
- } ) , index , subScenario || buildKind ) ) ;
612
+ } ) , index , subScenario ) ) ;
705
613
} ) ;
706
614
} ) ;
707
615
}
0 commit comments