aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/utility_functions_spec.lua
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2019-06-04 19:32:43 +0200
committerBjörn Linse <bjorn.linse@gmail.com>2019-06-05 10:46:22 +0200
commitb684bd05b513b57b4d67ea2f95f7713c0b18daab (patch)
treeefe13a5e0a42c0ca7c3589e761925960e15958ed /test/functional/lua/utility_functions_spec.lua
parent81e1dbca99c1485ab28ecb2c46d8d71a61bdb35d (diff)
downloadrneovim-b684bd05b513b57b4d67ea2f95f7713c0b18daab.tar.gz
rneovim-b684bd05b513b57b4d67ea2f95f7713c0b18daab.tar.bz2
rneovim-b684bd05b513b57b4d67ea2f95f7713c0b18daab.zip
lua: docs and tests for vim.schedule
Diffstat (limited to 'test/functional/lua/utility_functions_spec.lua')
-rw-r--r--test/functional/lua/utility_functions_spec.lua50
1 files changed, 36 insertions, 14 deletions
diff --git a/test/functional/lua/utility_functions_spec.lua b/test/functional/lua/utility_functions_spec.lua
index 67f5ce24f7..780d3a1565 100644
--- a/test/functional/lua/utility_functions_spec.lua
+++ b/test/functional/lua/utility_functions_spec.lua
@@ -5,10 +5,13 @@ local funcs = helpers.funcs
local meths = helpers.meths
local clear = helpers.clear
local eq = helpers.eq
+local eval = helpers.eval
+local feed = helpers.feed
+local meth_pcall = helpers.meth_pcall
before_each(clear)
-describe('vim.stricmp', function()
+describe('lua function', function()
-- İ: `tolower("İ")` is `i` which has length 1 while `İ` itself has
-- length 2 (in bytes).
-- Ⱥ: `tolower("Ⱥ")` is `ⱥ` which has length 2 while `Ⱥ` itself has
@@ -17,7 +20,7 @@ describe('vim.stricmp', function()
-- Note: 'i' !=? 'İ' and 'ⱥ' !=? 'Ⱥ' on some systems.
-- Note: Built-in Nvim comparison (on systems lacking `strcasecmp`) works
-- only on ASCII characters.
- it('works', function()
+ it('vim.stricmp', function()
eq(0, funcs.luaeval('vim.stricmp("a", "A")'))
eq(0, funcs.luaeval('vim.stricmp("A", "a")'))
eq(0, funcs.luaeval('vim.stricmp("a", "a")'))
@@ -106,10 +109,35 @@ describe('vim.stricmp', function()
eq(1, funcs.luaeval('vim.stricmp("\\0c\\0", "\\0b\\0")'))
eq(1, funcs.luaeval('vim.stricmp("\\0C\\0", "\\0B\\0")'))
end)
-end)
-describe("vim.split", function()
- it("works", function()
+ it("vim.schedule", function()
+ meths.execute_lua([[
+ test_table = {}
+ vim.schedule(function()
+ table.insert(test_table, "xx")
+ end)
+ table.insert(test_table, "yy")
+ ]], {})
+ eq({"yy","xx"}, meths.execute_lua("return test_table", {}))
+
+ -- type checked args
+ eq({false, 'Error executing lua: vim.schedule: expected function'},
+ meth_pcall(meths.execute_lua, "vim.schedule('stringly')", {}))
+
+ eq({false, 'Error executing lua: vim.schedule: expected function'},
+ meth_pcall(meths.execute_lua, "vim.schedule()", {}))
+
+ meths.execute_lua([[
+ vim.schedule(function()
+ error("big failure\nvery async")
+ end)
+ ]], {})
+
+ feed("<cr>")
+ eq('Error executing vim.schedule lua callback: [string "<nvim>"]:2: big failure\nvery async', eval("v:errmsg"))
+ end)
+
+ it("vim.split", function()
local split = function(str, sep)
return meths.execute_lua('return vim.split(...)', {str, sep})
end
@@ -141,10 +169,8 @@ describe("vim.split", function()
assert(string.match(err, "Infinite loop detected"))
end
end)
-end)
-describe("vim.trim", function()
- it('works', function()
+ it('vim.trim', function()
local trim = function(s)
return meths.execute_lua('return vim.trim(...)', { s })
end
@@ -164,10 +190,8 @@ describe("vim.trim", function()
eq(false, status)
assert(string.match(err, "Only strings can be trimmed"))
end)
-end)
-describe("vim.inspect", function()
- it('works', function()
+ it('vim.inspect', function()
-- just make sure it basically works, it has its own test suite
local inspect = function(t, opts)
return meths.execute_lua('return vim.inspect(...)', { t, opts })
@@ -187,10 +211,8 @@ describe("vim.inspect", function()
end})
]], {}))
end)
-end)
-describe("vim.deepcopy", function()
- it("works", function()
+ it("vim.deepcopy", function()
local is_dc = meths.execute_lua([[
local a = { x = { 1, 2 }, y = 5}
local b = vim.deepcopy(a)