aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/overrides_spec.lua
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2017-01-29 23:22:50 +0300
committerZyX <kp-pav@yandex.ru>2017-03-27 00:13:16 +0300
commit9fd2bf67aa1db66e3465753d5aaaec342f4ce193 (patch)
treec07db015f38c00b6ab3bf8c4b76a86910f46ad09 /test/functional/lua/overrides_spec.lua
parentebad04622056b0cb88e2b25211746b57fb4ef3c2 (diff)
downloadrneovim-9fd2bf67aa1db66e3465753d5aaaec342f4ce193.tar.gz
rneovim-9fd2bf67aa1db66e3465753d5aaaec342f4ce193.tar.bz2
rneovim-9fd2bf67aa1db66e3465753d5aaaec342f4ce193.zip
executor,functests: Add print() tests, some fixes
Diffstat (limited to 'test/functional/lua/overrides_spec.lua')
-rw-r--r--test/functional/lua/overrides_spec.lua65
1 files changed, 65 insertions, 0 deletions
diff --git a/test/functional/lua/overrides_spec.lua b/test/functional/lua/overrides_spec.lua
new file mode 100644
index 0000000000..92167d18dc
--- /dev/null
+++ b/test/functional/lua/overrides_spec.lua
@@ -0,0 +1,65 @@
+-- Test for Vim overrides of lua built-ins
+local helpers = require('test.functional.helpers')(after_each)
+
+local eq = helpers.eq
+local NIL = helpers.NIL
+local clear = helpers.clear
+local funcs = helpers.funcs
+local meths = helpers.meths
+local command = helpers.command
+local write_file = helpers.write_file
+local redir_exec = helpers.redir_exec
+
+local fname = 'Xtest-functional-lua-overrides-luafile'
+
+before_each(clear)
+
+after_each(function()
+ os.remove(fname)
+end)
+
+describe('print', function()
+ it('returns nothing', function()
+ eq(NIL, funcs.luaeval('print("abc")'))
+ eq(0, funcs.luaeval('select("#", print("abc"))'))
+ end)
+ it('allows catching printed text with :execute', function()
+ eq('\nabc', funcs.execute('lua print("abc")'))
+ eq('\nabc', funcs.execute('luado print("abc")'))
+ eq('\nabc', funcs.execute('call luaeval("print(\'abc\')")'))
+ write_file(fname, 'print("abc")')
+ eq('\nabc', funcs.execute('luafile ' .. fname))
+
+ eq('\nabc', redir_exec('lua print("abc")'))
+ eq('\nabc', redir_exec('luado print("abc")'))
+ eq('\nabc', redir_exec('call luaeval("print(\'abc\')")'))
+ write_file(fname, 'print("abc")')
+ eq('\nabc', redir_exec('luafile ' .. fname))
+ end)
+ it('handles errors in __tostring', function()
+ write_file(fname, [[
+ local meta_nilerr = { __tostring = function() error(nil) end }
+ local meta_abcerr = { __tostring = function() error("abc") end }
+ local meta_tblout = { __tostring = function() return {"TEST"} end }
+ v_nilerr = setmetatable({}, meta_nilerr)
+ v_abcerr = setmetatable({}, meta_abcerr)
+ v_tblout = setmetatable({}, meta_tblout)
+ ]])
+ eq('', redir_exec('luafile ' .. fname))
+ eq('\nE5114: Error while converting print argument #2: [NULL]',
+ redir_exec('lua print("foo", v_nilerr, "bar")'))
+ eq('\nE5114: Error while converting print argument #2: Xtest-functional-lua-overrides-luafile:2: abc',
+ redir_exec('lua print("foo", v_abcerr, "bar")'))
+ eq('\nE5114: Error while converting print argument #2: <Unknown error: lua_tolstring returned NULL for tostring result>',
+ redir_exec('lua print("foo", v_tblout, "bar")'))
+ end)
+ it('prints strings with NULs and NLs correctly', function()
+ meths.set_option('more', true)
+ eq('\nabc ^@ def\nghi^@^@^@jkl\nTEST\n\n\nT\n',
+ redir_exec([[lua print("abc \0 def\nghi\0\0\0jkl\nTEST\n\n\nT\n")]]))
+ eq('\nabc ^@ def\nghi^@^@^@jkl\nTEST\n\n\nT^@',
+ redir_exec([[lua print("abc \0 def\nghi\0\0\0jkl\nTEST\n\n\nT\0")]]))
+ eq('\nT^@', redir_exec([[lua print("T\0")]]))
+ eq('\nT\n', redir_exec([[lua print("T\n")]]))
+ end)
+end)