diff --git a/lib/ruby_lsp/addon.rb b/lib/ruby_lsp/addon.rb index 1944dc9bc..575e93fc9 100644 --- a/lib/ruby_lsp/addon.rb +++ b/lib/ruby_lsp/addon.rb @@ -72,6 +72,15 @@ def load_addons(global_state, outgoing_queue) addon.add_error(e) end end + + # Intended for use by tests for addons + sig { params(addon_name: String).returns(Addon) } + def get(addon_name) + addon = addons.find { |addon| addon.name == addon_name } + raise "Could not find addon '#{addon_name}'" unless addon + + addon + end end sig { void } diff --git a/test/addon_test.rb b/test/addon_test.rb index f17c4da20..fe2907b6c 100644 --- a/test/addon_test.rb +++ b/test/addon_test.rb @@ -99,5 +99,16 @@ def workspace_did_change_watched_files(changes); end Addon.file_watcher_addons.clear end end + + def test_get_an_addon_by_name + addon = Addon.get("My Addon") + assert_equal("My Addon", addon.name) + end + + def test_raises_if_an_addon_cannot_be_found + assert_raises do + Addon.get("Invalid Addon") + end + end end end