From f7002337c02a3a6b73b7d1409186c864b129413d Mon Sep 17 00:00:00 2001 From: notomo Date: Thu, 26 Aug 2021 23:37:36 +0900 Subject: backport: fix(lua): verify buffer in highlight.on_yank (#15482) Resolve an issue with deferred clearing of highlight failing if the buffer is deleted before the timeout by checking whether the buffer is valid first. --- test/functional/lua/highlight_spec.lua | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 test/functional/lua/highlight_spec.lua (limited to 'test/functional/lua') diff --git a/test/functional/lua/highlight_spec.lua b/test/functional/lua/highlight_spec.lua new file mode 100644 index 0000000000..853b2991e8 --- /dev/null +++ b/test/functional/lua/highlight_spec.lua @@ -0,0 +1,26 @@ +local helpers = require('test.functional.helpers')(after_each) +local funcs = helpers.funcs +local exec_lua = helpers.exec_lua +local command = helpers.command +local clear = helpers.clear + +describe('vim.highlight.on_yank', function() + + before_each(function() + clear() + end) + + it('does not show errors even if buffer is wiped before timeout', function() + command('new') + local bufnr = funcs.bufnr("%") + exec_lua[[ + vim.highlight.on_yank({timeout = 10, on_macro = true, event = {operator = "y", regtype = "v"}}) + vim.cmd('bwipeout!') + ]] + exec_lua[[vim.wait(10)]] + local pattern = [[vim/highlight.lua:%d+: Invalid buffer id: ]] .. bufnr + local exists = pcall(helpers.assert_log, pattern) + assert.is_false(exists, string.format("%q should not be in log", pattern)) + end) + +end) -- cgit From 51d6b26729f4a7b25b3b3dbc1496884b18a02ef4 Mon Sep 17 00:00:00 2001 From: notomo Date: Fri, 27 Aug 2021 20:54:01 +0900 Subject: backport: tests(lua/on_yank): assert conditions that fail correctly #15495 The test added in 274a3504a790a799b28ee89c75e29fb4dbdff41f does not fail if the code changes are reverted. --- test/functional/lua/highlight_spec.lua | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'test/functional/lua') diff --git a/test/functional/lua/highlight_spec.lua b/test/functional/lua/highlight_spec.lua index 853b2991e8..50eecb5d09 100644 --- a/test/functional/lua/highlight_spec.lua +++ b/test/functional/lua/highlight_spec.lua @@ -1,6 +1,7 @@ local helpers = require('test.functional.helpers')(after_each) -local funcs = helpers.funcs local exec_lua = helpers.exec_lua +local eq = helpers.eq +local eval = helpers.eval local command = helpers.command local clear = helpers.clear @@ -12,15 +13,13 @@ describe('vim.highlight.on_yank', function() it('does not show errors even if buffer is wiped before timeout', function() command('new') - local bufnr = funcs.bufnr("%") exec_lua[[ vim.highlight.on_yank({timeout = 10, on_macro = true, event = {operator = "y", regtype = "v"}}) vim.cmd('bwipeout!') ]] - exec_lua[[vim.wait(10)]] - local pattern = [[vim/highlight.lua:%d+: Invalid buffer id: ]] .. bufnr - local exists = pcall(helpers.assert_log, pattern) - assert.is_false(exists, string.format("%q should not be in log", pattern)) + helpers.sleep(10) + helpers.feed('') -- avoid hang if error message exists + eq('', eval('v:errmsg')) end) end) -- cgit