@@ -727,6 +727,66 @@ namespace ts.projectSystem {
727727 checkNumberOfInferredProjects ( projectService , 1 ) ;
728728 } ) ;
729729
730+ it ( "remove not-listed external projects" , ( ) => {
731+ const f1 = {
732+ path : "/a/app.ts" ,
733+ content : "let x = 1"
734+ } ;
735+ const f2 = {
736+ path : "/b/app.ts" ,
737+ content : "let x = 1"
738+ } ;
739+ const f3 = {
740+ path : "/c/app.ts" ,
741+ content : "let x = 1"
742+ } ;
743+ const makeProject = ( f : FileOrFolder ) => ( { projectFileName : f . path + ".csproj" , rootFiles : [ toExternalFile ( f . path ) ] , options : { } } ) ;
744+ const p1 = makeProject ( f1 ) ;
745+ const p2 = makeProject ( f2 ) ;
746+ const p3 = makeProject ( f3 ) ;
747+
748+ const host = createServerHost ( [ f1 , f2 , f3 ] ) ;
749+ const session = createSession ( host ) ;
750+
751+ session . executeCommand ( < protocol . OpenExternalProjectsRequest > {
752+ seq : 1 ,
753+ type : "request" ,
754+ command : "openExternalProjects" ,
755+ arguments : { projects : [ p1 , p2 ] }
756+ } ) ;
757+
758+ const projectService = session . getProjectService ( ) ;
759+ checkNumberOfProjects ( projectService , { externalProjects : 2 } ) ;
760+ assert . equal ( projectService . externalProjects [ 0 ] . getProjectName ( ) , p1 . projectFileName ) ;
761+ assert . equal ( projectService . externalProjects [ 1 ] . getProjectName ( ) , p2 . projectFileName ) ;
762+
763+ session . executeCommand ( < protocol . OpenExternalProjectsRequest > {
764+ seq : 2 ,
765+ type : "request" ,
766+ command : "openExternalProjects" ,
767+ arguments : { projects : [ p1 , p3 ] }
768+ } ) ;
769+ checkNumberOfProjects ( projectService , { externalProjects : 2 } ) ;
770+ assert . equal ( projectService . externalProjects [ 0 ] . getProjectName ( ) , p1 . projectFileName ) ;
771+ assert . equal ( projectService . externalProjects [ 1 ] . getProjectName ( ) , p3 . projectFileName ) ;
772+
773+ session . executeCommand ( < protocol . OpenExternalProjectsRequest > {
774+ seq : 3 ,
775+ type : "request" ,
776+ command : "openExternalProjects" ,
777+ arguments : { projects : [ ] }
778+ } ) ;
779+ checkNumberOfProjects ( projectService , { externalProjects : 0 } ) ;
780+
781+ session . executeCommand ( < protocol . OpenExternalProjectsRequest > {
782+ seq : 3 ,
783+ type : "request" ,
784+ command : "openExternalProjects" ,
785+ arguments : { projects : [ p2 ] }
786+ } ) ;
787+ assert . equal ( projectService . externalProjects [ 0 ] . getProjectName ( ) , p2 . projectFileName ) ;
788+ } ) ;
789+
730790 it ( "handle recreated files correctly" , ( ) => {
731791 const configFile : FileOrFolder = {
732792 path : "/a/b/tsconfig.json" ,
0 commit comments