@@ -96,8 +96,8 @@ def test_multiple_workspaces(tmpdir, pyls):
9696
9797 added_workspaces = [{'uri' : path_as_uri (str (x ))}
9898 for x in (workspace1_dir , workspace2_dir )]
99- pyls . m_workspace__did_change_workspace_folders (
100- added = added_workspaces , removed = [] )
99+ event = { 'added' : added_workspaces , 'removed' : []}
100+ pyls . m_workspace__did_change_workspace_folders ( event )
101101
102102 for workspace in added_workspaces :
103103 assert workspace ['uri' ] in pyls .workspaces
@@ -116,6 +116,84 @@ def test_multiple_workspaces(tmpdir, pyls):
116116 workspace2_uri = added_workspaces [1 ]['uri' ]
117117 assert msg ['uri' ] in pyls .workspaces [workspace2_uri ]._docs
118118
119- pyls . m_workspace__did_change_workspace_folders (
120- added = [], removed = [ added_workspaces [ 0 ]] )
119+ event = { 'added' : [], 'removed' : [ added_workspaces [ 0 ]]}
120+ pyls . m_workspace__did_change_workspace_folders ( event )
121121 assert workspace1_uri not in pyls .workspaces
122+
123+
124+ def test_multiple_workspaces_wrong_removed_uri (pyls ):
125+ workspace = {'uri' : 'Test123' }
126+ event = {'added' : [], 'removed' : [workspace ]}
127+ pyls .m_workspace__did_change_workspace_folders (event )
128+ assert workspace ['uri' ] not in pyls .workspaces
129+
130+
131+ def test_root_workspace_changed (pyls ):
132+ test_uri = 'Test123'
133+ pyls .root_uri = test_uri
134+ pyls .workspace ._root_uri = test_uri
135+
136+ workspace1 = {'uri' : test_uri }
137+ workspace2 = {'uri' : 'NewTest456' }
138+
139+ event = {'added' : [workspace2 ], 'removed' : [workspace1 ]}
140+ pyls .m_workspace__did_change_workspace_folders (event )
141+
142+ assert workspace2 ['uri' ] == pyls .workspace ._root_uri
143+ assert workspace2 ['uri' ] == pyls .root_uri
144+
145+
146+ def test_root_workspace_not_changed (pyls ):
147+ # removed uri != root_uri
148+ test_uri_1 = 'Test12'
149+ pyls .root_uri = test_uri_1
150+ pyls .workspace ._root_uri = test_uri_1
151+ workspace1 = {'uri' : 'Test1234' }
152+ workspace2 = {'uri' : 'NewTest456' }
153+ event = {'added' : [workspace2 ], 'removed' : [workspace1 ]}
154+ pyls .m_workspace__did_change_workspace_folders (event )
155+ assert test_uri_1 == pyls .workspace ._root_uri
156+ assert test_uri_1 == pyls .root_uri
157+ # empty 'added' list
158+ test_uri_2 = 'Test123'
159+ new_root_uri = workspace2 ['uri' ]
160+ pyls .root_uri = test_uri_2
161+ pyls .workspace ._root_uri = test_uri_2
162+ workspace1 = {'uri' : test_uri_2 }
163+ event = {'added' : [], 'removed' : [workspace1 ]}
164+ pyls .m_workspace__did_change_workspace_folders (event )
165+ assert new_root_uri == pyls .workspace ._root_uri
166+ assert new_root_uri == pyls .root_uri
167+ # empty 'removed' list
168+ event = {'added' : [workspace1 ], 'removed' : []}
169+ pyls .m_workspace__did_change_workspace_folders (event )
170+ assert new_root_uri == pyls .workspace ._root_uri
171+ assert new_root_uri == pyls .root_uri
172+ # 'added' list has no 'uri'
173+ workspace2 = {'TESTuri' : 'Test1234' }
174+ event = {'added' : [workspace2 ], 'removed' : [workspace1 ]}
175+ pyls .m_workspace__did_change_workspace_folders (event )
176+ assert new_root_uri == pyls .workspace ._root_uri
177+ assert new_root_uri == pyls .root_uri
178+
179+
180+ def test_root_workspace_removed (tmpdir , pyls ):
181+ workspace1_dir = tmpdir .mkdir ('workspace1' )
182+ workspace2_dir = tmpdir .mkdir ('workspace2' )
183+ root_uri = pyls .root_uri
184+
185+ # Add workspaces to the pyls
186+ added_workspaces = [{'uri' : path_as_uri (str (x ))}
187+ for x in (workspace1_dir , workspace2_dir )]
188+ event = {'added' : added_workspaces , 'removed' : []}
189+ pyls .m_workspace__did_change_workspace_folders (event )
190+
191+ # Remove the root workspace
192+ removed_workspaces = [{'uri' : root_uri }]
193+ event = {'added' : [], 'removed' : removed_workspaces }
194+ pyls .m_workspace__did_change_workspace_folders (event )
195+
196+ # Assert that the first of the workspaces (in alphabetical order) is now
197+ # the root workspace
198+ assert pyls .root_uri == path_as_uri (str (workspace1_dir ))
199+ assert pyls .workspace ._root_uri == path_as_uri (str (workspace1_dir ))
0 commit comments