@@ -331,21 +331,22 @@ interface Symbol {
331331 ( originalWriteFile || sys . writeFile ) . call ( sys , `${ buildInfoPath } .baseline.txt` , text ) ;
332332 }
333333
334- interface VerifyIncrementalCorrectness {
334+ interface VerifyTscEditCorrectnessInput {
335335 scenario : TestTscCompile [ "scenario" ] ;
336336 commandLineArgs : TestTscCompile [ "commandLineArgs" ] ;
337337 modifyFs : TestTscCompile [ "modifyFs" ] ;
338- incrementalModifyFs : TscIncremental [ "modifyFs" ] ;
338+ editFs : TestTscEdit [ "modifyFs" ] ;
339339 tick : ( ) => void ;
340340 baseFs : vfs . FileSystem ;
341341 newSys : TscCompileSystem ;
342- cleanBuildDiscrepancies : TscIncremental [ "cleanBuildDiscrepancies" ] ;
342+ cleanBuildDiscrepancies : TestTscEdit [ "cleanBuildDiscrepancies" ] ;
343343 }
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 } ` , ( ) => {
346347 const {
347348 scenario, commandLineArgs, cleanBuildDiscrepancies,
348- modifyFs, incrementalModifyFs ,
349+ modifyFs, editFs ,
349350 tick, baseFs, newSys
350351 } = input ( ) ;
351352 const sys = testTscCompile ( {
@@ -356,7 +357,7 @@ interface Symbol {
356357 modifyFs : fs => {
357358 tick ( ) ;
358359 if ( modifyFs ) modifyFs ( fs ) ;
359- incrementalModifyFs ( fs ) ;
360+ editFs ( fs ) ;
360361 } ,
361362 disableUseFileVersionAsSignature : true ,
362363 } ) ;
@@ -498,136 +499,45 @@ interface Symbol {
498499 CleanFilePresent ,
499500 }
500501
501- export interface TscIncremental {
502- buildKind : BuildKind ;
502+ export interface TestTscEdit {
503503 modifyFs : ( fs : vfs . FileSystem ) => void ;
504- subScenario ? : string ;
504+ subScenario : string ;
505505 commandLineArgs ?: readonly string [ ] ;
506506 cleanBuildDiscrepancies ?: ( ) => ESMap < string , CleanBuildDescrepancy > ;
507507 }
508508
509- export interface VerifyTsBuildInput extends VerifyTsBuildInputWorker {
509+ export interface VerifyTscWithEditsInput extends VerifyTscWithEditsWorkerInput {
510510 baselineIncremental ?: boolean ;
511511 }
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 [ ] ;
607514 }
608515
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 ) ;
611521 if ( input . baselineIncremental ) {
612- verifyTscSerializedIncrementalEditsWorker ( {
522+ verifyTscWithEditsWorker ( {
613523 ...input ,
614524 subScenario : `${ input . subScenario } with incremental` ,
615525 commandLineArgs : [ ...input . commandLineArgs , "--incremental" ] ,
616526 } ) ;
617527 }
618528 }
619- function verifyTscSerializedIncrementalEditsWorker ( {
529+ function verifyTscWithEditsWorker ( {
620530 subScenario, fs, scenario, commandLineArgs,
621531 baselineSourceMap, modifyFs, baselineReadFileCalls, baselinePrograms,
622- incrementalScenarios
623- } : VerifyTsBuildInputWorker ) {
532+ edits
533+ } : VerifyTscWithEditsWorkerInput ) {
624534 describe ( `tsc ${ commandLineArgs . join ( " " ) } ${ scenario } :: ${ subScenario } serializedEdits` , ( ) => {
625- Debug . assert ( ! ! incrementalScenarios . length , `${ scenario } /${ subScenario } :: No incremental scenarios, you probably want to use verifyTsc instead.` ) ;
626535 let tick : ( ) => void ;
627536 let sys : TscCompileSystem ;
628537 let baseFs : vfs . FileSystem ;
629- let incrementalSys : TscCompileSystem [ ] ;
538+ let editsSys : TscCompileSystem [ ] ;
630539 before ( ( ) => {
540+ Debug . assert ( ! ! edits . length , `${ scenario } /${ subScenario } :: No incremental scenarios, you probably want to use verifyTsc instead.` ) ;
631541 ( { fs : baseFs , tick } = getFsWithTime ( fs ( ) ) ) ;
632542 sys = testTscCompile ( {
633543 scenario,
@@ -642,18 +552,17 @@ interface Symbol {
642552 baselineReadFileCalls,
643553 baselinePrograms
644554 } ) ;
645- incrementalScenarios . forEach ( (
646- { buildKind , modifyFs, subScenario : incrementalSubScenario , commandLineArgs : incrementalCommandLineArgs } ,
555+ edits . forEach ( (
556+ { modifyFs, subScenario : editScenario , commandLineArgs : editCommandLineArgs } ,
647557 index
648558 ) => {
649- Debug . assert ( buildKind !== BuildKind . Initial , "Incremental edit cannot be initial compilation" ) ;
650559 tick ( ) ;
651- ( incrementalSys || ( incrementalSys = [ ] ) ) . push ( testTscCompile ( {
560+ ( editsSys || ( editsSys = [ ] ) ) . push ( testTscCompile ( {
652561 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 ,
657566 modifyFs : fs => {
658567 tick ( ) ;
659568 modifyFs ( fs ) ;
@@ -669,39 +578,38 @@ interface Symbol {
669578 baseFs = undefined ! ;
670579 sys = undefined ! ;
671580 tick = undefined ! ;
672- incrementalSys = undefined ! ;
581+ editsSys = undefined ! ;
673582 } ) ;
674- describe ( "serializedBuild" , ( ) => {
675-
583+ describe ( "tsc invocation after edit" , ( ) => {
676584 verifyTscBaseline ( ( ) => ( {
677585 baseLine : ( ) => {
678586 const { file, text } = sys . baseLine ( ) ;
679587 const texts : string [ ] = [ text ] ;
680- incrementalSys . forEach ( ( sys , index ) => {
681- const incrementalScenario = incrementalScenarios [ index ] ;
588+ editsSys . forEach ( ( sys , index ) => {
589+ const incrementalScenario = edits [ index ] ;
682590 texts . push ( "" ) ;
683- texts . push ( `Change:: ${ incrementalScenario . subScenario || incrementalScenario . buildKind } ` ) ;
591+ texts . push ( `Change:: ${ incrementalScenario . subScenario } ` ) ;
684592 texts . push ( sys . baseLine ( ) . text ) ;
685593 } ) ;
686594 return { file, text : texts . join ( "\r\n" ) } ;
687595 }
688596 } ) ) ;
689597 } ) ;
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 ( ( ) => ( {
692600 scenario,
693601 baseFs,
694- newSys : incrementalSys [ index ] ,
695- commandLineArgs : incrementalCommandLineArgs || commandLineArgs ,
602+ newSys : editsSys [ index ] ,
603+ commandLineArgs : editCommandLineArgs || commandLineArgs ,
696604 cleanBuildDiscrepancies,
697- incrementalModifyFs : fs => {
605+ editFs : fs => {
698606 for ( let i = 0 ; i <= index ; i ++ ) {
699- incrementalScenarios [ i ] . modifyFs ( fs ) ;
607+ edits [ i ] . modifyFs ( fs ) ;
700608 }
701609 } ,
702610 modifyFs,
703611 tick
704- } ) , index , subScenario || buildKind ) ) ;
612+ } ) , index , subScenario ) ) ;
705613 } ) ;
706614 } ) ;
707615 }
0 commit comments