@@ -9022,13 +9022,19 @@ export const x = 10;`
90229022
90239023 describe ( "tsserverProjectSystem with large file" , ( ) => {
90249024 const projectRoot = "/user/username/projects/project" ;
9025- const largeFile : File = {
9026- path : `${ projectRoot } /src/large.ts` ,
9027- content : "export var x = 10;" ,
9028- fileSize : server . maxFileSize + 1
9029- } ;
90309025
9031- function createSessionWithEventHandler ( host : TestServerHost ) {
9026+ function getLargeFile ( useLargeTsFile : boolean ) {
9027+ return `src/large.${ useLargeTsFile ? "ts" : "js" } ` ;
9028+ }
9029+
9030+ function createSessionWithEventHandler ( files : File [ ] , useLargeTsFile : boolean ) {
9031+ const largeFile : File = {
9032+ path : `${ projectRoot } /${ getLargeFile ( useLargeTsFile ) } ` ,
9033+ content : "export var x = 10;" ,
9034+ fileSize : server . maxFileSize + 1
9035+ } ;
9036+ files . push ( largeFile ) ;
9037+ const host = createServerHost ( files ) ;
90329038 const largeFileReferencedEvents : server . LargeFileReferencedEvent [ ] = [ ] ;
90339039 const session = createSession ( host , {
90349040 eventHandler : e => {
@@ -9038,55 +9044,61 @@ export const x = 10;`
90389044 }
90399045 } ) ;
90409046
9041- return { session, verifyLargeFileReferencedEvent } ;
9047+ return { session, verifyLargeFile } ;
90429048
9043- function verifyLargeFileReferencedEvent ( ) {
9044- assert . equal ( largeFileReferencedEvents . length , 1 ) ;
9045- assert . deepEqual ( largeFileReferencedEvents , [ {
9049+ function verifyLargeFile ( project : server . Project ) {
9050+ checkProjectActualFiles ( project , files . map ( f => f . path ) ) ;
9051+
9052+ // large file for non ts file should be empty and for ts file should have content
9053+ const service = session . getProjectService ( ) ;
9054+ const info = service . getScriptInfo ( largeFile . path ) ! ;
9055+ assert . equal ( info . cacheSourceFile . sourceFile . text , useLargeTsFile ? largeFile . content : "" ) ;
9056+
9057+ assert . deepEqual ( largeFileReferencedEvents , useLargeTsFile ? emptyArray : [ {
90469058 eventName : server . LargeFileReferencedEvent ,
90479059 data : { file : largeFile . path , fileSize : largeFile . fileSize , maxFileSize : server . maxFileSize }
90489060 } ] ) ;
90499061 }
90509062 }
90519063
9052- it ( "when large file is included by tsconfig" , ( ) => {
9053- const file : File = {
9054- path : `${ projectRoot } /src/file.ts` ,
9055- content : "export var y = 10;"
9056- } ;
9057- const tsconfig : File = {
9058- path : `${ projectRoot } /tsconfig.json` ,
9059- content : JSON . stringify ( { files : [ "src/file.ts" , "src/large.ts" ] } )
9060- } ;
9061- const files = [ file , largeFile , libFile , tsconfig ] ;
9062- const host = createServerHost ( files ) ;
9063- const { session, verifyLargeFileReferencedEvent } = createSessionWithEventHandler ( host ) ;
9064- const service = session . getProjectService ( ) ;
9065- openFilesForSession ( [ file ] , session ) ;
9066- checkNumberOfProjects ( service , { configuredProjects : 1 } ) ;
9067- const project = service . configuredProjects . get ( tsconfig . path ) ! ;
9068- checkProjectActualFiles ( project , [ file . path , libFile . path , largeFile . path , tsconfig . path ] ) ;
9069- const info = service . getScriptInfo ( largeFile . path ) ! ;
9070- assert . equal ( info . cacheSourceFile . sourceFile . text , "" ) ;
9071- verifyLargeFileReferencedEvent ( ) ;
9064+ function verifyLargeFile ( useLargeTsFile : boolean ) {
9065+ it ( "when large file is included by tsconfig" , ( ) => {
9066+ const file : File = {
9067+ path : `${ projectRoot } /src/file.ts` ,
9068+ content : "export var y = 10;"
9069+ } ;
9070+ const tsconfig : File = {
9071+ path : `${ projectRoot } /tsconfig.json` ,
9072+ content : JSON . stringify ( { files : [ "src/file.ts" , getLargeFile ( useLargeTsFile ) ] , compilerOptions : { target : 1 , allowJs : true } } )
9073+ } ;
9074+ const files = [ file , libFile , tsconfig ] ;
9075+ const { session, verifyLargeFile } = createSessionWithEventHandler ( files , useLargeTsFile ) ;
9076+ const service = session . getProjectService ( ) ;
9077+ openFilesForSession ( [ file ] , session ) ;
9078+ checkNumberOfProjects ( service , { configuredProjects : 1 } ) ;
9079+ verifyLargeFile ( service . configuredProjects . get ( tsconfig . path ) ! ) ;
9080+ } ) ;
9081+
9082+ it ( "when large file is included by module resolution" , ( ) => {
9083+ const file : File = {
9084+ path : `${ projectRoot } /src/file.ts` ,
9085+ content : `export var y = 10;import {x} from "./large"`
9086+ } ;
9087+ const files = [ file , libFile ] ;
9088+ const { session, verifyLargeFile } = createSessionWithEventHandler ( files , useLargeTsFile ) ;
9089+ const service = session . getProjectService ( ) ;
9090+ openFilesForSession ( [ file ] , session ) ;
9091+ checkNumberOfProjects ( service , { inferredProjects : 1 } ) ;
9092+ verifyLargeFile ( service . inferredProjects [ 0 ] ) ;
9093+ } ) ;
9094+ }
9095+
9096+ describe ( "large file is ts file" , ( ) => {
9097+ verifyLargeFile ( /*useLargeTsFile*/ true ) ;
90729098 } ) ;
90739099
9074- it ( "when large file is included by module resolution" , ( ) => {
9075- const file : File = {
9076- path : `${ projectRoot } /src/file.ts` ,
9077- content : `export var y = 10;import {x} from "./large"`
9078- } ;
9079- const files = [ file , largeFile , libFile ] ;
9080- const host = createServerHost ( files ) ;
9081- const { session, verifyLargeFileReferencedEvent } = createSessionWithEventHandler ( host ) ;
9082- const service = session . getProjectService ( ) ;
9083- openFilesForSession ( [ file ] , session ) ;
9084- checkNumberOfProjects ( service , { inferredProjects : 1 } ) ;
9085- const project = service . inferredProjects [ 0 ] ;
9086- checkProjectActualFiles ( project , [ file . path , libFile . path , largeFile . path ] ) ;
9087- const info = service . getScriptInfo ( largeFile . path ) ! ;
9088- assert . equal ( info . cacheSourceFile . sourceFile . text , "" ) ;
9089- verifyLargeFileReferencedEvent ( ) ;
9100+ describe ( "large file is js file" , ( ) => {
9101+ verifyLargeFile ( /*useLargeTsFile*/ false ) ;
90909102 } ) ;
90919103 } ) ;
90929104
0 commit comments