aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/functional/api/vim_spec.lua109
-rw-r--r--test/functional/ex_cmds/write_spec.lua20
-rw-r--r--test/functional/ex_cmds/wviminfo_spec.lua18
-rw-r--r--test/functional/legacy/011_autocommands_spec.lua5
-rw-r--r--test/functional/legacy/097_glob_path_spec.lua2
-rw-r--r--test/functional/legacy/delete_spec.lua6
6 files changed, 140 insertions, 20 deletions
diff --git a/test/functional/api/vim_spec.lua b/test/functional/api/vim_spec.lua
index 71fa6632c7..1e910b6aa7 100644
--- a/test/functional/api/vim_spec.lua
+++ b/test/functional/api/vim_spec.lua
@@ -766,6 +766,115 @@ describe('api', function()
end)
end)
+ describe('nvim_list_chans and nvim_get_chan_info', function()
+ before_each(function()
+ command('autocmd ChanOpen * let g:opened_event = copy(v:event)')
+ command('autocmd ChanInfo * let g:info_event = copy(v:event)')
+ end)
+ local testinfo = {
+ stream = 'stdio',
+ id = 1,
+ mode = 'rpc',
+ client = {},
+ }
+ local stderr = {
+ stream = 'stderr',
+ id = 2,
+ mode = 'bytes',
+ }
+
+ it('returns {} for invalid channel', function()
+ eq({}, meths.get_chan_info(0))
+ eq({}, meths.get_chan_info(-1))
+ -- more preallocated numbers might be added, try something high
+ eq({}, meths.get_chan_info(10))
+ end)
+
+ it('works for stdio channel', function()
+ eq({[1]=testinfo,[2]=stderr}, meths.list_chans())
+ eq(testinfo, meths.get_chan_info(1))
+ eq(stderr, meths.get_chan_info(2))
+
+ meths.set_client_info("functionaltests",
+ {major=0, minor=3, patch=17},
+ 'ui',
+ {do_stuff={n_args={2,3}}},
+ {license= 'Apache2'})
+ local info = {
+ stream = 'stdio',
+ id = 1,
+ mode = 'rpc',
+ client = {
+ name='functionaltests',
+ version={major=0, minor=3, patch=17},
+ type='ui',
+ methods={do_stuff={n_args={2,3}}},
+ attributes={license='Apache2'},
+ },
+ }
+ eq({info=info}, meths.get_var("info_event"))
+ eq({[1]=info, [2]=stderr}, meths.list_chans())
+ eq(info, meths.get_chan_info(1))
+ end)
+
+ it('works for job channel', function()
+ if iswin() and os.getenv('APPVEYOR') ~= nil then
+ pending("jobstart(['cat']) unreliable on appveyor")
+ return
+ end
+ eq(3, eval("jobstart(['cat'], {'rpc': v:true})"))
+ local info = {
+ stream='job',
+ id=3,
+ mode='rpc',
+ client={},
+ }
+ eq({info=info}, meths.get_var("opened_event"))
+ eq({[1]=testinfo,[2]=stderr,[3]=info}, meths.list_chans())
+ eq(info, meths.get_chan_info(3))
+ eval('rpcrequest(3, "nvim_set_client_info", "cat", {}, "remote",'..
+ '{"nvim_command":{"n_args":1}},'.. -- and so on
+ '{"description":"The Amazing Cat"})')
+ info = {
+ stream='job',
+ id=3,
+ mode='rpc',
+ client = {
+ name='cat',
+ version={major=0},
+ type='remote',
+ methods={nvim_command={n_args=1}},
+ attributes={description="The Amazing Cat"},
+ },
+ }
+ eq({info=info}, meths.get_var("info_event"))
+ eq({[1]=testinfo,[2]=stderr,[3]=info}, meths.list_chans())
+ end)
+
+ it('works for :terminal channel', function()
+ command(":terminal")
+ eq({id=1}, meths.get_current_buf())
+ eq(3, meths.buf_get_option(1, "channel"))
+
+ local info = {
+ stream='job',
+ id=3,
+ mode='terminal',
+ buffer = 1,
+ pty='?',
+ }
+ local event = meths.get_var("opened_event")
+ if not iswin() then
+ info.pty = event.info.pty
+ neq(nil, string.match(info.pty, "^/dev/"))
+ end
+ eq({info=info}, event)
+ info.buffer = {id=1}
+ eq({[1]=testinfo,[2]=stderr,[3]=info}, meths.list_chans())
+ eq(info, meths.get_chan_info(3))
+ end)
+ end)
+
describe('nvim_call_atomic', function()
it('works', function()
meths.buf_set_lines(0, 0, -1, true, {'first'})
diff --git a/test/functional/ex_cmds/write_spec.lua b/test/functional/ex_cmds/write_spec.lua
index bcf83698bb..3f54ff6f41 100644
--- a/test/functional/ex_cmds/write_spec.lua
+++ b/test/functional/ex_cmds/write_spec.lua
@@ -9,6 +9,7 @@ local command = helpers.command
local feed_command = helpers.feed_command
local funcs = helpers.funcs
local meths = helpers.meths
+local iswin = helpers.iswin
local fname = 'Xtest-functional-ex_cmds-write'
local fname_bak = fname .. '~'
@@ -34,11 +35,14 @@ describe(':write', function()
it('&backupcopy=auto preserves symlinks', function()
command('set backupcopy=auto')
write_file('test_bkc_file.txt', 'content0')
- if helpers.iswin() then
+ if iswin() then
command("silent !mklink test_bkc_link.txt test_bkc_file.txt")
else
command("silent !ln -s test_bkc_file.txt test_bkc_link.txt")
end
+ if eval('v:shell_error') ~= 0 then
+ pending('Cannot create symlink', function()end)
+ end
source([[
edit test_bkc_link.txt
call setline(1, ['content1'])
@@ -51,11 +55,14 @@ describe(':write', function()
it('&backupcopy=no replaces symlink with new file', function()
command('set backupcopy=no')
write_file('test_bkc_file.txt', 'content0')
- if helpers.iswin() then
+ if iswin() then
command("silent !mklink test_bkc_link.txt test_bkc_file.txt")
else
command("silent !ln -s test_bkc_file.txt test_bkc_link.txt")
end
+ if eval('v:shell_error') ~= 0 then
+ pending('Cannot create symlink', function()end)
+ end
source([[
edit test_bkc_link.txt
call setline(1, ['content1'])
@@ -66,7 +73,8 @@ describe(':write', function()
end)
it("appends FIFO file", function()
- if eval("executable('mkfifo')") == 0 then
+ -- mkfifo creates read-only .lnk files on Windows
+ if iswin() or eval("executable('mkfifo')") == 0 then
pending('missing "mkfifo" command', function()end)
return
end
@@ -88,7 +96,7 @@ describe(':write', function()
command('let $HOME=""')
eq(funcs.fnamemodify('.', ':p:h'), funcs.fnamemodify('.', ':p:h:~'))
-- Message from check_overwrite
- if not helpers.iswin() then
+ if not iswin() then
eq(('\nE17: "'..funcs.fnamemodify('.', ':p:h')..'" is a directory'),
redir_exec('write .'))
end
@@ -108,7 +116,7 @@ describe(':write', function()
funcs.setfperm(fname, 'r--------')
eq('Vim(write):E505: "Xtest-functional-ex_cmds-write" is read-only (add ! to override)',
exc_exec('write'))
- if helpers.iswin() then
+ if iswin() then
eq(0, os.execute('del /q/f ' .. fname))
eq(0, os.execute('rd /q/s ' .. fname_bak))
else
@@ -117,7 +125,7 @@ describe(':write', function()
end
write_file(fname_bak, 'TTYX')
-- FIXME: exc_exec('write!') outputs 0 in Windows
- if helpers.iswin() then return end
+ if iswin() then return end
lfs.link(fname_bak .. ('/xxxxx'):rep(20), fname, true)
eq('Vim(write):E166: Can\'t open linked file for writing',
exc_exec('write!'))
diff --git a/test/functional/ex_cmds/wviminfo_spec.lua b/test/functional/ex_cmds/wviminfo_spec.lua
index eebbd70f2b..df0b9df5dd 100644
--- a/test/functional/ex_cmds/wviminfo_spec.lua
+++ b/test/functional/ex_cmds/wviminfo_spec.lua
@@ -3,21 +3,21 @@ local lfs = require('lfs')
local command, eq, neq, spawn, nvim_prog, set_session, write_file =
helpers.command, helpers.eq, helpers.neq, helpers.spawn,
helpers.nvim_prog, helpers.set_session, helpers.write_file
+local iswin = helpers.iswin
+local read_file = helpers.read_file
describe(':wshada', function()
local shada_file = 'wshada_test'
local session
before_each(function()
- if session then
- session:close()
- end
-
-- Override the default session because we need 'swapfile' for these tests.
- session = spawn({nvim_prog, '-u', 'NONE', '-i', '/dev/null', '--embed',
+ session = spawn({nvim_prog, '-u', 'NONE', '-i', iswin() and 'nul' or '/dev/null', '--embed',
'--cmd', 'set swapfile'})
set_session(session)
-
+ end)
+ after_each(function ()
+ session:close()
os.remove(shada_file)
end)
@@ -36,7 +36,7 @@ describe(':wshada', function()
write_file(shada_file, text)
-- sanity check
- eq(text, io.open(shada_file):read())
+ eq(text, read_file(shada_file))
neq(nil, lfs.attributes(shada_file))
command('wsh! '..shada_file)
@@ -49,8 +49,4 @@ describe(':wshada', function()
assert(char1:byte() == 0x01,
shada_file..' should be a shada file')
end)
-
- teardown(function()
- os.remove(shada_file)
- end)
end)
diff --git a/test/functional/legacy/011_autocommands_spec.lua b/test/functional/legacy/011_autocommands_spec.lua
index c2667d28d2..379646b2ba 100644
--- a/test/functional/legacy/011_autocommands_spec.lua
+++ b/test/functional/legacy/011_autocommands_spec.lua
@@ -17,9 +17,10 @@ local lfs = require('lfs')
local clear, feed_command, expect, eq, neq, dedent, write_file, feed =
helpers.clear, helpers.feed_command, helpers.expect, helpers.eq, helpers.neq,
helpers.dedent, helpers.write_file, helpers.feed
+local iswin = helpers.iswin
local function has_gzip()
- local null = helpers.iswin() and 'nul' or '/dev/null'
+ local null = iswin() and 'nul' or '/dev/null'
return os.execute('gzip --help >' .. null .. ' 2>&1') == 0
end
@@ -59,7 +60,7 @@ describe('file reading, writing and bufnew and filter autocommands', function()
os.remove('test.out')
end)
- if not has_gzip() then
+ if iswin() or not has_gzip() then
pending('skipped (missing `gzip` utility)', function() end)
else
diff --git a/test/functional/legacy/097_glob_path_spec.lua b/test/functional/legacy/097_glob_path_spec.lua
index 907f0665ae..ccd93fed60 100644
--- a/test/functional/legacy/097_glob_path_spec.lua
+++ b/test/functional/legacy/097_glob_path_spec.lua
@@ -74,7 +74,7 @@ describe('glob() and globpath()', function()
teardown(function()
if helpers.iswin() then
os.execute('del /q/f Xxx{ Xxx$')
- os.execute('rd /q sautest')
+ os.execute('rd /q /s sautest')
else
os.execute("rm -rf sautest Xxx{ Xxx$")
end
diff --git a/test/functional/legacy/delete_spec.lua b/test/functional/legacy/delete_spec.lua
index 5ef456bfe3..9ea3269828 100644
--- a/test/functional/legacy/delete_spec.lua
+++ b/test/functional/legacy/delete_spec.lua
@@ -4,6 +4,9 @@ local eq, eval, command = helpers.eq, helpers.eval, helpers.command
describe('Test for delete()', function()
before_each(clear)
+ after_each(function()
+ os.remove('Xfile')
+ end)
it('file delete', function()
command('split Xfile')
@@ -52,6 +55,9 @@ describe('Test for delete()', function()
silent !ln -s Xfile Xlink
endif
]])
+ if eval('v:shell_error') ~= 0 then
+ pending('Cannot create symlink', function()end)
+ end
-- Delete the link, not the file
eq(0, eval("delete('Xlink')"))
eq(-1, eval("delete('Xlink')"))