diff options
| author | Justin M. Keyes <justinkz@gmail.com> | 2021-08-23 02:37:07 -0700 |
|---|---|---|
| committer | Justin M. Keyes <justinkz@gmail.com> | 2025-05-04 11:22:57 -0400 |
| commit | fc2dee17368d76e7e845872990bb6fdef1c6bf54 (patch) | |
| tree | 6c8862b5b1d17c86bf3bc61065e1c9a8456cb415 /test/functional/lua/loop_spec.lua | |
| parent | af4f7f1618ad6e11d616b2c69af8945f46d0e199 (diff) | |
| download | rneovim-fc2dee17368d76e7e845872990bb6fdef1c6bf54.tar.gz rneovim-fc2dee17368d76e7e845872990bb6fdef1c6bf54.tar.bz2 rneovim-fc2dee17368d76e7e845872990bb6fdef1c6bf54.zip | |
feat(messages): cleanup Lua error messages
"Error" in error messages is redundant. Just provide the context, don't
say "Error ...".
Diffstat (limited to 'test/functional/lua/loop_spec.lua')
| -rw-r--r-- | test/functional/lua/loop_spec.lua | 245 |
1 files changed, 0 insertions, 245 deletions
diff --git a/test/functional/lua/loop_spec.lua b/test/functional/lua/loop_spec.lua deleted file mode 100644 index 0ee101a0eb..0000000000 --- a/test/functional/lua/loop_spec.lua +++ /dev/null @@ -1,245 +0,0 @@ --- Test suite for testing interactions with API bindings -local t = require('test.testutil') -local n = require('test.functional.testnvim')() -local Screen = require('test.functional.ui.screen') - -local fn = n.fn -local api = n.api -local clear = n.clear -local sleep = vim.uv.sleep -local feed = n.feed -local eq = t.eq -local eval = n.eval -local matches = t.matches -local exec_lua = n.exec_lua -local retry = t.retry - -before_each(clear) - -describe('vim.uv', function() - it('version', function() - assert(fn.luaeval('vim.uv.version()') >= 72961, 'libuv version too old') - matches('(%d+)%.(%d+)%.(%d+)', fn.luaeval('vim.uv.version_string()')) - end) - - it('timer', function() - exec_lua('vim.api.nvim_set_var("coroutine_cnt", 0)', {}) - - local code = function() - local touch = 0 - local function wait(ms) - local this = coroutine.running() - assert(this) - local timer = assert(vim.uv.new_timer()) - timer:start( - ms, - 0, - vim.schedule_wrap(function() - timer:close() - touch = touch + 1 - coroutine.resume(this) - touch = touch + 1 - assert(touch == 3) - vim.api.nvim_set_var('coroutine_cnt_1', touch) - end) - ) - coroutine.yield() - touch = touch + 1 - return touch - end - coroutine.wrap(function() - local touched = wait(10) - assert(touched == touch) - vim.api.nvim_set_var('coroutine_cnt', touched) - end)() - end - - eq(0, api.nvim_get_var('coroutine_cnt')) - exec_lua(code) - retry(2, nil, function() - sleep(50) - eq(2, api.nvim_get_var('coroutine_cnt')) - end) - eq(3, api.nvim_get_var('coroutine_cnt_1')) - end) - - it('is API safe', function() - local screen = Screen.new(50, 10) - screen:set_default_attr_ids({ - [1] = { bold = true, foreground = Screen.colors.Blue1 }, - [2] = { bold = true, reverse = true }, - [3] = { foreground = Screen.colors.Grey100, background = Screen.colors.Red }, - [4] = { bold = true, foreground = Screen.colors.SeaGreen4 }, - [5] = { bold = true }, - }) - - -- deferred API functions are disabled, as their safety can't be guaranteed - exec_lua([[ - local timer = vim.uv.new_timer() - timer:start(20, 0, function () - _G.is_fast = vim.in_fast_event() - timer:close() - vim.api.nvim_set_var("valid", true) - vim.api.nvim_command("echomsg 'howdy'") - end) - ]]) - - screen:expect([[ - | - {2: }| - {3:Error executing callback:} | - {3:[string "<nvim>"]:5: E5560: nvim_set_var must not }| - {3:be called in a fast event context} | - {3:stack traceback:} | - {3: [C]: in function 'nvim_set_var'} | - {3: [string "<nvim>"]:5: in function <[string }| - {3:"<nvim>"]:2>} | - {4:Press ENTER or type command to continue}^ | - ]]) - feed('<cr>') - eq(false, eval("get(g:, 'valid', v:false)")) - eq(true, exec_lua('return _G.is_fast')) - - -- callbacks can be scheduled to be executed in the main event loop - -- where the entire API is available - exec_lua(function() - local timer = assert(vim.uv.new_timer()) - timer:start( - 20, - 0, - vim.schedule_wrap(function() - _G.is_fast = vim.in_fast_event() - timer:close() - vim.api.nvim_set_var('valid', true) - vim.api.nvim_command("echomsg 'howdy'") - end) - ) - end) - - screen:expect([[ - ^ | - {1:~ }|*8 - howdy | - ]]) - eq(true, eval("get(g:, 'valid', v:false)")) - eq(false, exec_lua('return _G.is_fast')) - - -- fast (not deferred) API functions are allowed to be called directly - exec_lua(function() - local timer = assert(vim.uv.new_timer()) - timer:start(20, 0, function() - timer:close() - -- input is queued for processing after the callback returns - vim.api.nvim_input('isneaky') - _G.mode = vim.api.nvim_get_mode() - end) - end) - screen:expect([[ - sneaky^ | - {1:~ }|*8 - {5:-- INSERT --} | - ]]) - eq({ blocking = false, mode = 'n' }, exec_lua('return _G.mode')) - - exec_lua(function() - local timer = assert(vim.uv.new_timer()) - timer:start(20, 0, function() - _G.is_fast = vim.in_fast_event() - timer:close() - _G.value = vim.fn.has('nvim-0.5') - _G.unvalue = vim.fn.has('python3') - end) - end) - - screen:expect({ any = [[{3:Vim:E5560: Vimscript function must not be called i}]] }) - feed('<cr>') - eq({ 1, nil }, exec_lua('return {_G.value, _G.unvalue}')) - end) - - it("is equal to require('luv')", function() - eq(true, exec_lua("return vim.uv == require('luv')")) - end) - - it('non-string error() #32595', function() - local screen = Screen.new(50, 10) - exec_lua(function() - local timer = assert(vim.uv.new_timer()) - timer:start(0, 0, function() - timer:close() - error(nil) - end) - end) - local s = [[ - | - {1:~ }|*5 - {3: }| - {9:Error executing callback:} | - {9:[NULL]} | - {6:Press ENTER or type command to continue}^ | - ]] - screen:expect(s) - feed('<cr>') - n.assert_alive() - screen:expect([[ - ^ | - {1:~ }|*8 - | - ]]) - exec_lua(function() - vim.uv.fs_stat('non-existent-file', function() - error(nil) - end) - end) - screen:expect(s) - feed('<cr>') - n.assert_alive() - end) - - it("doesn't crash on async callbacks throwing nil error", function() - local screen = Screen.new(50, 4) - - exec_lua(function() - _G.idle = vim.uv.new_idle() - _G.idle:start(function() - _G.idle:stop() - error() - end) - end) - - screen:expect([[ - {3: }| - {9:Error executing callback:} | - {9:[NULL]} | - {6:Press ENTER or type command to continue}^ | - ]]) - feed('<cr>') - - exec_lua(function() - _G.idle:close() - end) - end) - - it("doesn't crash on async callbacks throwing object as an error", function() - local screen = Screen.new(50, 4) - - exec_lua(function() - _G.idle = vim.uv.new_idle() - _G.idle:start(function() - _G.idle:stop() - error(_G.idle) -- userdata with __tostring method - end) - end) - - screen:expect([[ - {3: }| - {9:Error executing callback:} | - {9:uv_idle_t: 0x{MATCH:%w+}}{MATCH: +}| - {6:Press ENTER or type command to continue}^ | - ]]) - feed('<cr>') - - exec_lua(function() - _G.idle:close() - end) - end) -end) |