1313package org .eclipse .lsp4e .test ;
1414
1515import static org .eclipse .lsp4e .test .utils .TestUtils .waitForAndAssertCondition ;
16- import static org .junit .Assert .* ;
16+ import static org .junit .Assert .assertTrue ;
1717
18- import java .io .File ;
1918import java .net .URI ;
19+ import java .nio .file .Paths ;
2020import java .util .Collection ;
21- import java .util .List ;
2221
2322import org .eclipse .core .resources .IFile ;
2423import org .eclipse .core .runtime .NullProgressMonitor ;
2928import org .eclipse .lsp4e .test .utils .TestUtils ;
3029import org .eclipse .lsp4e .test .utils .TestUtils .JobSynchronizer ;
3130import org .eclipse .lsp4e .tests .mock .MockLanguageServer ;
32- import org .eclipse .lsp4e .tests .mock .MockWorkspaceService ;
3331import org .eclipse .lsp4e .ui .UI ;
34- import org .eclipse .lsp4j .DidChangeWorkspaceFoldersParams ;
3532import org .eclipse .lsp4j .ServerCapabilities ;
36- import org .eclipse .lsp4j .WorkspaceFolder ;
3733import org .eclipse .lsp4j .WorkspaceFoldersOptions ;
3834import org .eclipse .lsp4j .WorkspaceServerCapabilities ;
3935import org .junit .Before ;
@@ -92,12 +88,12 @@ public void testPojectCreate() throws Exception {
9288 UI .getActivePage ().closeAllEditors (false );
9389 waitForAndAssertCondition (5_000 , () -> !MockLanguageServer .INSTANCE .isRunning ());
9490
95- final MockWorkspaceService mockWorkspaceService = MockLanguageServer . INSTANCE . getWorkspaceService ();
96- final List < DidChangeWorkspaceFoldersParams > events = mockWorkspaceService . getWorkspaceFoldersEvents ( );
97- assertEquals ( 1 , events . size ());
98- final List < WorkspaceFolder > added = events . get ( 0 ). getEvent (). getAdded ();
99- assertEquals ( 1 , added . size ());
100- assertEquals ( new File ( project . getLocationURI ()), new File ( new URI (added .get ( 0 ). getUri ()). normalize ( )));
91+ // test that the LS emitted a workspace-folder added event for our project
92+ final var expected = Paths . get ( project . getLocationURI () );
93+ assertTrue ( MockLanguageServer . INSTANCE . getWorkspaceService () //
94+ . getWorkspaceFoldersEvents (). stream () //
95+ . flatMap ( event -> event . getEvent (). getAdded (). stream ()) //
96+ . anyMatch ( added -> Paths . get ( URI . create (added .getUri ())). equals ( expected )));
10197 }
10298
10399 @ Test
@@ -112,16 +108,12 @@ public void testProjectClose() throws Exception {
112108 project .close (synchronizer );
113109 synchronizer .await ();
114110
115- waitForAndAssertCondition (5_000 , () -> {
116- assertEquals (2 , MockLanguageServer .INSTANCE .getWorkspaceService ().getWorkspaceFoldersEvents ().size ());
117- return true ;
118- });
119- final MockWorkspaceService mockWorkspaceService = MockLanguageServer .INSTANCE .getWorkspaceService ();
120- final List <DidChangeWorkspaceFoldersParams > events = mockWorkspaceService .getWorkspaceFoldersEvents ();
121- assertEquals (2 , events .size ());
122- final List <WorkspaceFolder > removed = events .get (1 ).getEvent ().getRemoved ();
123- assertEquals (1 , removed .size ());
124- assertEquals (new File (project .getLocationURI ()), new File (new URI (removed .get (0 ).getUri ())));
111+ // test that the LS emitted a workspace-folder removal event for our project
112+ final var expected = Paths .get (project .getLocationURI ());
113+ waitForAndAssertCondition (5_000 , () -> MockLanguageServer .INSTANCE .getWorkspaceService () //
114+ .getWorkspaceFoldersEvents ().stream () //
115+ .flatMap (evt -> evt .getEvent ().getRemoved ().stream ()) //
116+ .anyMatch (removed -> Paths .get (URI .create (removed .getUri ())).equals (expected )));
125117 }
126118
127119 @ Test
@@ -137,18 +129,16 @@ public void testProjectDelete() throws Exception {
137129 assertTrue (wrapper1 .isActive ());
138130
139131 // Grab this before deletion otherwise project.getLocationURI will be null...
140- final var expected = new File (project .getLocationURI ());
132+ final var expected = Paths . get (project .getLocationURI ());
141133 final var synchronizer = new JobSynchronizer ();
142134 project .delete (true , true , synchronizer );
143135 synchronizer .await ();
144- final MockWorkspaceService mockWorkspaceService = MockLanguageServer .INSTANCE .getWorkspaceService ();
145- final List <DidChangeWorkspaceFoldersParams > events = mockWorkspaceService .getWorkspaceFoldersEvents ();
146- assertEquals (2 , events .size ());
147- final List <WorkspaceFolder > removed = events .get (1 ).getEvent ().getRemoved ();
148- assertEquals (1 , removed .size ());
149-
150- // Compare files to bodge round URI canonicalization problems
151- assertEquals (expected , new File (new URI (removed .get (0 ).getUri ())));
136+
137+ // test that the LS emitted a workspace-folder removal event for our project
138+ assertTrue (MockLanguageServer .INSTANCE .getWorkspaceService () //
139+ .getWorkspaceFoldersEvents ().stream () //
140+ .flatMap (event -> event .getEvent ().getRemoved ().stream ()) //
141+ .anyMatch (removed -> Paths .get (URI .create (removed .getUri ())).equals (expected )));
152142 }
153143
154144 @ Test
@@ -172,15 +162,12 @@ public void testProjectReopen() throws Exception {
172162
173163 waitForAndAssertCondition (5_000 , () -> project .isOpen ());
174164
175- waitForAndAssertCondition (5_000 , () -> {
176- assertEquals (3 , MockLanguageServer .INSTANCE .getWorkspaceService ().getWorkspaceFoldersEvents ().size ());
177- return true ;
178- });
179- final MockWorkspaceService mockWorkspaceService = MockLanguageServer .INSTANCE .getWorkspaceService ();
180- final List <DidChangeWorkspaceFoldersParams > events = mockWorkspaceService .getWorkspaceFoldersEvents ();
181- final List <WorkspaceFolder > added = events .get (2 ).getEvent ().getAdded ();
182- assertEquals (1 , added .size ());
183- assertEquals (new File (project .getLocationURI ()), new File (new URI (added .get (0 ).getUri ())));
165+ // test that the LS emitted a workspace-folder added event for our project
166+ final var expected = Paths .get (project .getLocationURI ());
167+ waitForAndAssertCondition (5_000 , () -> MockLanguageServer .INSTANCE .getWorkspaceService () //
168+ .getWorkspaceFoldersEvents ().stream () //
169+ .flatMap (evt -> evt .getEvent ().getAdded ().stream ()) //
170+ .anyMatch (added -> Paths .get (URI .create (added .getUri ())).equals (expected )));
184171 }
185172
186173 @ Override
0 commit comments