aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorelky <kylelholzinger@gmail.com>2023-04-05 16:51:51 -0400
committerGitHub <noreply@github.com>2023-04-05 22:51:51 +0200
commit4b9cb43f34f71156a27468d10f5ebf8180ae19af (patch)
treebb002634438c96bd0f3193bfb3b742d0e52768de
parenttests: fix scheduling (#183) (diff)
downloadmason-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.lua7
-rw-r--r--tests/helpers/lua/test_helpers.lua25
-rw-r--r--tests/mason-lspconfig/setup_spec.lua18
-rw-r--r--vim.yml5
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()
diff --git a/vim.yml b/vim.yml
index 72b86e7..2fb8959 100644
--- a/vim.yml
+++ b/vim.yml
@@ -31,6 +31,11 @@ globals:
mockx.returns:
args:
- type: any
+ mockx.table:
+ args:
+ - type: table
+ - type: string
+ - type: any
describe:
args: