@@ -727,6 +727,66 @@ namespace ts.projectSystem {
727
727
checkNumberOfInferredProjects ( projectService , 1 ) ;
728
728
} ) ;
729
729
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
+
730
790
it ( "handle recreated files correctly" , ( ) => {
731
791
const configFile : FileOrFolder = {
732
792
path : "/a/b/tsconfig.json" ,
0 commit comments