@@ -9022,13 +9022,19 @@ export const x = 10;`
9022
9022
9023
9023
describe ( "tsserverProjectSystem with large file" , ( ) => {
9024
9024
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
- } ;
9030
9025
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 ) ;
9032
9038
const largeFileReferencedEvents : server . LargeFileReferencedEvent [ ] = [ ] ;
9033
9039
const session = createSession ( host , {
9034
9040
eventHandler : e => {
@@ -9038,55 +9044,61 @@ export const x = 10;`
9038
9044
}
9039
9045
} ) ;
9040
9046
9041
- return { session, verifyLargeFileReferencedEvent } ;
9047
+ return { session, verifyLargeFile } ;
9042
9048
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 : [ {
9046
9058
eventName : server . LargeFileReferencedEvent ,
9047
9059
data : { file : largeFile . path , fileSize : largeFile . fileSize , maxFileSize : server . maxFileSize }
9048
9060
} ] ) ;
9049
9061
}
9050
9062
}
9051
9063
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 ) ;
9072
9098
} ) ;
9073
9099
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 ) ;
9090
9102
} ) ;
9091
9103
} ) ;
9092
9104
0 commit comments