From 02e2704044cc9bf37f3af2301d6a49f34c2e12cd Mon Sep 17 00:00:00 2001 From: Vinicius Stock Date: Thu, 26 Feb 2026 10:07:53 -0500 Subject: [PATCH] Prevent workspace_dependencies failing if directory gets removed during execution --- lib/ruby_lsp/server.rb | 2 +- test/server_test.rb | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) 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" })