aboutsummaryrefslogtreecommitdiff
path: root/test/functional/api/autocmd_spec.lua
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-04-17 05:44:06 +0800
committerGitHub <noreply@github.com>2024-04-17 05:44:06 +0800
commitf150b62423d57b6f9fbe57330589937dfbb34f4a (patch)
treec6d137ab0d2164e97adce7f3ddce689bc97b0a86 /test/functional/api/autocmd_spec.lua
parent8e5c48b08dad54706500e353c58ffb91f2684dd3 (diff)
downloadrneovim-f150b62423d57b6f9fbe57330589937dfbb34f4a.tar.gz
rneovim-f150b62423d57b6f9fbe57330589937dfbb34f4a.tar.bz2
rneovim-f150b62423d57b6f9fbe57330589937dfbb34f4a.zip
fix(lua): only free luarefs when returning from API (#28373)
Diffstat (limited to 'test/functional/api/autocmd_spec.lua')
-rw-r--r--test/functional/api/autocmd_spec.lua38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/functional/api/autocmd_spec.lua b/test/functional/api/autocmd_spec.lua
index e5412a8e99..d2ec3a576c 100644
--- a/test/functional/api/autocmd_spec.lua
+++ b/test/functional/api/autocmd_spec.lua
@@ -355,6 +355,44 @@ describe('autocmd api', function()
test({ 'list' })
test({ foo = 'bar' })
end)
+
+ it('function in arbitrary data is passed to all autocmds #28353', function()
+ eq(
+ 1303,
+ exec_lua([[
+ local res = 1
+
+ local fun = function(m, x)
+ res = res * m + x
+ end
+
+ local group = vim.api.nvim_create_augroup('MyTest', { clear = false })
+
+ vim.api.nvim_create_autocmd('User', {
+ group = group,
+ callback = function(payload)
+ payload.data.fun(10, payload.data.x)
+ end,
+ pattern = 'MyEvent',
+ })
+ vim.api.nvim_create_autocmd('User', {
+ group = group,
+ callback = function(payload)
+ payload.data.fun(100, payload.data.x)
+ end,
+ pattern = 'MyEvent',
+ })
+
+ vim.api.nvim_exec_autocmds('User', {
+ group = group,
+ pattern = 'MyEvent',
+ data = { x = 3, fun = fun },
+ })
+
+ return res
+ ]])
+ )
+ end)
end)
describe('nvim_get_autocmds', function()