diff options
-rw-r--r-- | test/functional/helpers.lua | 50 | ||||
-rw-r--r-- | test/functional/legacy/004_bufenter_with_modelines_spec.lua | 4 | ||||
-rw-r--r-- | test/functional/legacy/101_hlsearch_spec.lua | 3 | ||||
-rw-r--r-- | test/functional/shell/viml_system_spec.lua | 1 |
4 files changed, 29 insertions, 29 deletions
diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua index 2c08fb7818..4a98056104 100644 --- a/test/functional/helpers.lua +++ b/test/functional/helpers.lua @@ -42,7 +42,6 @@ local function request(method, ...) if not loop_stopped then -- Except when the loop has been stopped by a notification triggered -- by the initial request, for example. - session:request('vim_eval', '1') end return rv end @@ -99,25 +98,20 @@ local function nvim_eval(expr) return request('vim_eval', expr) end -local function nvim_feed(input, mode) - mode = mode or '' - request('vim_feedkeys', input, mode) -end - -local function buffer_slice(start, stop, buffer_idx) - local include_end = false - if not stop then - stop = -1 - include_end = true +local function nvim_feed(input) + while #input > 0 do + local written = request('vim_input', input) + input = input:sub(written + 1) end - local buffer = request('vim_get_buffers')[buffer_idx or 1] - local slice = request('buffer_get_line_slice', buffer, start or 0, stop, - true, include_end) - return table.concat(slice, '\n') end local function nvim_replace_termcodes(input) - return request('vim_replace_termcodes', input, false, true, true) + -- small hack to stop <C-@> from being replaced by the internal + -- representation(which is different and won't work for vim_input) + local temp_replacement = 'CCCCCCCCC@@@@@@@@@@' + input = input:gsub('<[Cc][-]@>', temp_replacement) + local rv = request('vim_replace_termcodes', input, false, true, true) + return rv:gsub(temp_replacement, '\000') end local function dedent(str) @@ -150,7 +144,7 @@ end local function rawfeed(...) for _, v in ipairs({...}) do - nvim_feed(dedent(v), 'nt') + nvim_feed(dedent(v)) end end @@ -166,19 +160,19 @@ local function clear() end local function insert(...) - nvim_feed('i', 'nt') + nvim_feed('i') rawfeed(...) - nvim_feed(nvim_replace_termcodes('<ESC>'), 'nt') + nvim_feed(nvim_replace_termcodes('<ESC>')) end local function execute(...) for _, v in ipairs({...}) do if v:sub(1, 1) ~= '/' then -- not a search command, prefix with colon - nvim_feed(':', 'nt') + nvim_feed(':') end - nvim_feed(v, 'nt') - nvim_feed(nvim_replace_termcodes('<CR>'), 'nt') + nvim_feed(v) + nvim_feed(nvim_replace_termcodes('<CR>')) end end @@ -200,10 +194,6 @@ local function neq(expected, actual) return assert.are_not.same(expected, actual) end -local function expect(contents, first, last, buffer_index) - return eq(dedent(contents), buffer_slice(first, last, buffer_index)) -end - local function ok(expr) assert.is_true(expr) end @@ -233,6 +223,10 @@ local function curbuf(method, ...) end local function curbuf_contents() + -- Before inspecting the buffer, execute 'vim_eval' to wait until all + -- previously sent keys are processed(vim_eval is a deferred function, and + -- only processed after all input) + session:request('vim_eval', '1') return table.concat(curbuf('get_line_slice', 0, -1, true, true), '\n') end @@ -252,6 +246,10 @@ local function curtab(method, ...) return tabpage(method, tab, ...) end +local function expect(contents) + return eq(dedent(contents), curbuf_contents()) +end + clear() return { diff --git a/test/functional/legacy/004_bufenter_with_modelines_spec.lua b/test/functional/legacy/004_bufenter_with_modelines_spec.lua index f1222700a7..6f009b52dd 100644 --- a/test/functional/legacy/004_bufenter_with_modelines_spec.lua +++ b/test/functional/legacy/004_bufenter_with_modelines_spec.lua @@ -31,7 +31,7 @@ describe('BufEnter with modelines', function() execute('sp Xxx') -- Append text with autoindent to this file - feed('G?this is a<Esc>') + feed('G?this is a<CR>') feed('othis should be auto-indented<Esc>') -- Go to Xxx, no autocmd anymore @@ -39,7 +39,7 @@ describe('BufEnter with modelines', function() execute('buf Xxx') -- Append text without autoindent to Xxx - feed('G?this is a<Esc>') + feed('G?this is a<CR>') feed('othis should be in column 1<Esc>') execute('wq') diff --git a/test/functional/legacy/101_hlsearch_spec.lua b/test/functional/legacy/101_hlsearch_spec.lua index 4a3abb19ce..3c44f02edb 100644 --- a/test/functional/legacy/101_hlsearch_spec.lua +++ b/test/functional/legacy/101_hlsearch_spec.lua @@ -3,6 +3,7 @@ local helpers = require('test.functional.helpers') local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert local execute, expect = helpers.execute, helpers.expect +local eval = helpers.eval describe('v:hlsearch', function() setup(clear) @@ -44,7 +45,7 @@ describe('v:hlsearch', function() execute('$put=r') execute('call garbagecollect(1)') execute('call getchar()') - execute('1d') + execute('1d', '1d') -- Assert buffer contents. expect([[ diff --git a/test/functional/shell/viml_system_spec.lua b/test/functional/shell/viml_system_spec.lua index 91e115aedf..84c8765b48 100644 --- a/test/functional/shell/viml_system_spec.lua +++ b/test/functional/shell/viml_system_spec.lua @@ -10,6 +10,7 @@ local eq, clear, eval, feed, nvim = local function create_file_with_nuls(name) return function() feed('ipart1<C-V>000part2<C-V>000part3<ESC>:w '..name..'<CR>') + eval('1') -- wait for the file to be created end end |