diff options
| author | elky <kylelholzinger@gmail.com> | 2023-04-05 16:51:51 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-05 22:51:51 +0200 |
| commit | 4b9cb43f34f71156a27468d10f5ebf8180ae19af (patch) | |
| tree | bb002634438c96bd0f3193bfb3b742d0e52768de | |
| parent | tests: fix scheduling (#183) (diff) | |
| download | mason-lspconfig-4b9cb43f34f71156a27468d10f5ebf8180ae19af.tar mason-lspconfig-4b9cb43f34f71156a27468d10f5ebf8180ae19af.tar.gz mason-lspconfig-4b9cb43f34f71156a27468d10f5ebf8180ae19af.tar.bz2 mason-lspconfig-4b9cb43f34f71156a27468d10f5ebf8180ae19af.tar.lz mason-lspconfig-4b9cb43f34f71156a27468d10f5ebf8180ae19af.tar.xz mason-lspconfig-4b9cb43f34f71156a27468d10f5ebf8180ae19af.tar.zst mason-lspconfig-4b9cb43f34f71156a27468d10f5ebf8180ae19af.zip | |
feat: register package aliases (#182)
| -rw-r--r-- | lua/mason-lspconfig/init.lua | 7 | ||||
| -rw-r--r-- | tests/helpers/lua/test_helpers.lua | 25 | ||||
| -rw-r--r-- | tests/mason-lspconfig/setup_spec.lua | 18 | ||||
| -rw-r--r-- | vim.yml | 5 |
4 files changed, 55 insertions, 0 deletions
diff --git a/lua/mason-lspconfig/init.lua b/lua/mason-lspconfig/init.lua index bc42865..c364634 100644 --- a/lua/mason-lspconfig/init.lua +++ b/lua/mason-lspconfig/init.lua @@ -24,6 +24,13 @@ function M.setup(config) require "mason-lspconfig.ensure_installed"() end + local registry = require "mason-registry" + if registry.register_package_aliases then + registry.register_package_aliases(_.map(function(server_name) + return { server_name } + end, require("mason-lspconfig.mappings.server").package_to_lspconfig)) + end + require "mason-lspconfig.api.command" end diff --git a/tests/helpers/lua/test_helpers.lua b/tests/helpers/lua/test_helpers.lua index 5e38639..15ccd5e 100644 --- a/tests/helpers/lua/test_helpers.lua +++ b/tests/helpers/lua/test_helpers.lua @@ -16,6 +16,25 @@ function async_test(suspend_fn) end end +local TableMock = {} +TableMock.__index = TableMock + +function TableMock.new(tbl, key) + return setmetatable({ + tbl = tbl, + key = key, + }, TableMock) +end + +function TableMock:apply(value) + self.original_value = self.tbl[self.key] + self.tbl[self.key] = value +end + +function TableMock:revert() + self.tbl[self.key] = self.original_value +end + -- selene: allow(incorrect_standard_library_use) mockx = { just_runs = function() end, @@ -29,6 +48,12 @@ mockx = { error(exception, 2) end end, + table = function(tbl, key, new_value) + local mock = TableMock.new(tbl, key) + mock:apply(new_value) + assert:add_spy(mock) + return mock + end, } ---@param package_name string diff --git a/tests/mason-lspconfig/setup_spec.lua b/tests/mason-lspconfig/setup_spec.lua index 9bb5edf..6c8f293 100644 --- a/tests/mason-lspconfig/setup_spec.lua +++ b/tests/mason-lspconfig/setup_spec.lua @@ -225,6 +225,24 @@ describe("mason-lspconfig setup", function() assert.same({ name = "dummylsp", cmd = { "user-cmd" } }, config) end) + + it("should set up package aliases", function() + stub(registry, "register_package_aliases") + + local mapping_mock = mockx.table(require "mason-lspconfig.mappings.server", "package_to_lspconfig", { + ["rust-analyzer"] = "rust_analyzer", + ["typescript-language-server"] = "tsserver", + }) + + mason_lspconfig.setup {} + + assert.spy(registry.register_package_aliases).was_called(1) + assert.spy(registry.register_package_aliases).was_called_with { + ["rust-analyzer"] = { "rust_analyzer" }, + ["typescript-language-server"] = { "tsserver" }, + } + mapping_mock:revert() + end) end) describe("mason-lspconfig setup_handlers", function() @@ -31,6 +31,11 @@ globals: mockx.returns: args: - type: any + mockx.table: + args: + - type: table + - type: string + - type: any describe: args: |
