aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2025-03-31 11:25:37 +0100
committerLewis Russell <me@lewisr.dev>2025-03-31 16:42:25 +0100
commit2ee896201c463f57395cffd12a83c18a9a7bfd9b (patch)
tree8ad8926eac5d02159fdcba20e3593eafa04653bd /test
parent04901f4ee784af4124390bf596b951d80b7bd35d (diff)
downloadrneovim-2ee896201c463f57395cffd12a83c18a9a7bfd9b.tar.gz
rneovim-2ee896201c463f57395cffd12a83c18a9a7bfd9b.tar.bz2
rneovim-2ee896201c463f57395cffd12a83c18a9a7bfd9b.zip
fix(lsp): better handling of "*" configs
Problem: If a config name contains "*" it causes rtp discovery of `lsp/` to consider the `*` as a wildcard and could lead to strange and unintended behaviour. For example, accessing the `'*'` config from a `lsp/` file would cause an infinite loop. Solution: - Explicitly disallow a config name from containing wildcards, with the exception of `'*'`. - When Resolving `'*'` config, skip the rtp step.
Diffstat (limited to 'test')
-rw-r--r--test/functional/plugin/lsp_spec.lua31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/functional/plugin/lsp_spec.lua b/test/functional/plugin/lsp_spec.lua
index 856c086add..ebb8f20aaa 100644
--- a/test/functional/plugin/lsp_spec.lua
+++ b/test/functional/plugin/lsp_spec.lua
@@ -6449,5 +6449,36 @@ describe('LSP', function()
end)
)
end)
+
+ it('does not allow wildcards in config name', function()
+ local err =
+ '.../lsp.lua:0: name: expected non%-wildcard string, got foo%*%. Info: LSP config name cannot contain wildcard %("%*"%)'
+
+ matches(
+ err,
+ pcall_err(exec_lua, function()
+ local _ = vim.lsp.config['foo*']
+ end)
+ )
+
+ matches(
+ err,
+ pcall_err(exec_lua, function()
+ vim.lsp.config['foo*'] = {}
+ end)
+ )
+
+ matches(
+ err,
+ pcall_err(exec_lua, function()
+ vim.lsp.config('foo*', {})
+ end)
+ )
+
+ -- Exception for '*'
+ pcall(exec_lua, function()
+ vim.lsp.config('*', {})
+ end)
+ end)
end)
end)