diff --git a/lib/ruby_lsp/server.rb b/lib/ruby_lsp/server.rb index 75285543a6..a35b4681d5 100644 --- a/lib/ruby_lsp/server.rb +++ b/lib/ruby_lsp/server.rb @@ -1211,7 +1211,7 @@ def workspace_dependencies(message) } end end - rescue Bundler::GemNotFound, Bundler::GemfileNotFound + rescue Bundler::GemNotFound, Bundler::GemfileNotFound, Errno::ENOENT [] end diff --git a/test/server_test.rb b/test/server_test.rb index 725448fee9..b0deb769e5 100644 --- a/test/server_test.rb +++ b/test/server_test.rb @@ -383,6 +383,24 @@ def test_workspace_dependencies_does_not_fail_if_gems_are_not_installed assert_empty(@server.pop_response.response) end + def test_workspace_dependencies_returns_empty_response_when_cwd_is_deleted + original_dir = Dir.pwd + + begin + parent = Dir.mktmpdir + workspace = File.join(parent, "workspace") + Dir.mkdir(workspace) + Dir.chdir(workspace) + FileUtils.rm_rf(parent) + + @server.process_message({ id: 1, method: "rubyLsp/workspace/dependencies" }) + + assert_empty(@server.pop_response.response) + ensure + Dir.chdir(original_dir) + end + end + def test_workspace_dependencies_returns_empty_list_when_there_is_no_bundle @server.global_state.expects(:top_level_bundle).returns(false) @server.process_message({ id: 1, method: "rubyLsp/workspace/dependencies" })