Skip to content

Commit da50c40

Browse files
authored
Prevent workspace_dependencies failing if directory gets removed during execution (#3980)
1 parent fd6b60e commit da50c40

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

lib/ruby_lsp/server.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1211,7 +1211,7 @@ def workspace_dependencies(message)
12111211
}
12121212
end
12131213
end
1214-
rescue Bundler::GemNotFound, Bundler::GemfileNotFound
1214+
rescue Bundler::GemNotFound, Bundler::GemfileNotFound, Errno::ENOENT
12151215
[]
12161216
end
12171217

test/server_test.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,24 @@ def test_workspace_dependencies_does_not_fail_if_gems_are_not_installed
383383
assert_empty(@server.pop_response.response)
384384
end
385385

386+
def test_workspace_dependencies_returns_empty_response_when_cwd_is_deleted
387+
original_dir = Dir.pwd
388+
389+
begin
390+
parent = Dir.mktmpdir
391+
workspace = File.join(parent, "workspace")
392+
Dir.mkdir(workspace)
393+
Dir.chdir(workspace)
394+
FileUtils.rm_rf(parent)
395+
396+
@server.process_message({ id: 1, method: "rubyLsp/workspace/dependencies" })
397+
398+
assert_empty(@server.pop_response.response)
399+
ensure
400+
Dir.chdir(original_dir)
401+
end
402+
end
403+
386404
def test_workspace_dependencies_returns_empty_list_when_there_is_no_bundle
387405
@server.global_state.expects(:top_level_bundle).returns(false)
388406
@server.process_message({ id: 1, method: "rubyLsp/workspace/dependencies" })

0 commit comments

Comments
 (0)