mirror of
https://github.com/neovim/neovim.git
synced 2025-10-21 17:21:49 +00:00
lua: introduce vim.loop (expose libuv event-loop) #10123
Co-authored-by: Andrey Popp <8mayday@gmail.com> closes #9546 closes #10084
This commit is contained in:

committed by
Justin M. Keyes

parent
3e58e60568
commit
c83926cd0a
55
test/functional/lua/loop_spec.lua
Normal file
55
test/functional/lua/loop_spec.lua
Normal file
@@ -0,0 +1,55 @@
|
||||
-- Test suite for testing interactions with API bindings
|
||||
local helpers = require('test.functional.helpers')(after_each)
|
||||
local funcs = helpers.funcs
|
||||
local meths = helpers.meths
|
||||
local clear = helpers.clear
|
||||
local sleep = helpers.sleep
|
||||
local eq = helpers.eq
|
||||
local matches = helpers.matches
|
||||
|
||||
before_each(clear)
|
||||
|
||||
describe('vim.loop', function()
|
||||
|
||||
it('version', function()
|
||||
assert(funcs.luaeval('vim.loop.version()')>=72961, "libuv version too old")
|
||||
matches("(%d+)%.(%d+)%.(%d+)", funcs.luaeval('vim.loop.version_string()'))
|
||||
end)
|
||||
|
||||
it('timer', function()
|
||||
meths.execute_lua('vim.api.nvim_set_var("coroutine_cnt", 0)', {})
|
||||
|
||||
local code=[[
|
||||
local loop = vim.loop
|
||||
|
||||
local touch = 0
|
||||
local function wait(ms)
|
||||
local this = coroutine.running()
|
||||
assert(this)
|
||||
local timer = loop.new_timer()
|
||||
timer:start(ms, 0, 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)()
|
||||
]]
|
||||
|
||||
eq(0, meths.get_var('coroutine_cnt'))
|
||||
meths.execute_lua(code, {})
|
||||
sleep(20)
|
||||
eq(2, meths.get_var('coroutine_cnt'))
|
||||
eq(3, meths.get_var('coroutine_cnt_1'))
|
||||
end)
|
||||
end)
|
Reference in New Issue
Block a user