diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2018-09-23 18:51:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-23 18:51:39 +0200 |
commit | f8f83579ff42ce01e9fe852ec7d9202c4891db87 (patch) | |
tree | 5fbd8e27cd1e2fabfef672e8c3ec8045c5cdc75e /test/functional | |
parent | d3c90cbbb420dd9ea7fc0e1523e9c89a0f8476d0 (diff) | |
parent | 990c147de39dfbe587927c9261cbb9f928cfd730 (diff) | |
download | rneovim-f8f83579ff42ce01e9fe852ec7d9202c4891db87.tar.gz rneovim-f8f83579ff42ce01e9fe852ec7d9202c4891db87.tar.bz2 rneovim-f8f83579ff42ce01e9fe852ec7d9202c4891db87.zip |
Merge #9034 'swapfile: always show dialog'
Diffstat (limited to 'test/functional')
-rw-r--r-- | test/functional/ex_cmds/recover_spec.lua | 76 | ||||
-rw-r--r-- | test/functional/ex_cmds/swapfile_preserve_recover_spec.lua | 154 | ||||
-rw-r--r-- | test/functional/options/shortmess_spec.lua | 99 | ||||
-rw-r--r-- | test/functional/ui/highlight_spec.lua | 22 |
4 files changed, 241 insertions, 110 deletions
diff --git a/test/functional/ex_cmds/recover_spec.lua b/test/functional/ex_cmds/recover_spec.lua deleted file mode 100644 index cb68c29b9a..0000000000 --- a/test/functional/ex_cmds/recover_spec.lua +++ /dev/null @@ -1,76 +0,0 @@ -local helpers = require('test.functional.helpers')(after_each) -local lfs = require('lfs') -local feed_command, eq, clear, eval, feed, expect, source = - helpers.feed_command, helpers.eq, helpers.clear, helpers.eval, helpers.feed, - helpers.expect, helpers.source -local command = helpers.command -local ok = helpers.ok -local rmdir = helpers.rmdir - -describe(':recover', function() - before_each(clear) - - it('fails if given a non-existent swapfile', function() - local swapname = 'bogus-swapfile' - feed_command('recover '..swapname) -- This should not segfault. #2117 - eq('E305: No swap file found for '..swapname, eval('v:errmsg')) - end) - -end) - -describe(':preserve', function() - local swapdir = lfs.currentdir()..'/testdir_recover_spec' - before_each(function() - clear() - rmdir(swapdir) - lfs.mkdir(swapdir) - end) - after_each(function() - command('%bwipeout!') - rmdir(swapdir) - end) - - it("saves to custom 'directory' and (R)ecovers (issue #1836)", function() - local testfile = 'testfile_recover_spec' - -- Put swapdir at the start of the 'directory' list. #1836 - -- Note: `set swapfile` *must* go after `set directory`: otherwise it may - -- attempt to create a swapfile in different directory. - local init = [[ - set directory^=]]..swapdir:gsub([[\]], [[\\]])..[[// - set swapfile fileformat=unix undolevels=-1 - ]] - - source(init) - command('edit! '..testfile) - feed('isometext<esc>') - command('preserve') - source('redir => g:swapname | silent swapname | redir END') - - local swappath1 = eval('g:swapname') - - --TODO(justinmk): this is an ugly hack to force `helpers` to support - --multiple sessions. - local nvim2 = helpers.spawn({helpers.nvim_prog, '-u', 'NONE', '-i', 'NONE', '--embed'}, - true) - helpers.set_session(nvim2) - - source(init) - - -- Use the "SwapExists" event to choose the (R)ecover choice at the dialog. - command('autocmd SwapExists * let v:swapchoice = "r"') - command('silent edit! '..testfile) - source('redir => g:swapname | silent swapname | redir END') - - local swappath2 = eval('g:swapname') - - expect('sometext') - -- swapfile from session 1 should end in .swp - eq(testfile..'.swp', string.match(swappath1, '[^%%]+$')) - -- swapfile from session 2 should end in .swo - eq(testfile..'.swo', string.match(swappath2, '[^%%]+$')) - -- Verify that :swapname was not truncated (:help 'shortmess'). - ok(nil == string.find(swappath1, '%.%.%.')) - ok(nil == string.find(swappath2, '%.%.%.')) - end) - -end) diff --git a/test/functional/ex_cmds/swapfile_preserve_recover_spec.lua b/test/functional/ex_cmds/swapfile_preserve_recover_spec.lua new file mode 100644 index 0000000000..577a26178a --- /dev/null +++ b/test/functional/ex_cmds/swapfile_preserve_recover_spec.lua @@ -0,0 +1,154 @@ +local Screen = require('test.functional.ui.screen') +local helpers = require('test.functional.helpers')(after_each) +local lfs = require('lfs') +local feed_command, eq, eval, expect, source = + helpers.feed_command, helpers.eq, helpers.eval, helpers.expect, helpers.source +local clear = helpers.clear +local command = helpers.command +local feed = helpers.feed +local nvim_prog = helpers.nvim_prog +local ok = helpers.ok +local rmdir = helpers.rmdir +local set_session = helpers.set_session +local spawn = helpers.spawn + +describe(':recover', function() + before_each(clear) + + it('fails if given a non-existent swapfile', function() + local swapname = 'bogus-swapfile' + feed_command('recover '..swapname) -- This should not segfault. #2117 + eq('E305: No swap file found for '..swapname, eval('v:errmsg')) + end) + +end) + +describe(':preserve', function() + local swapdir = lfs.currentdir()..'/Xtest_recover_dir' + before_each(function() + clear() + rmdir(swapdir) + lfs.mkdir(swapdir) + end) + after_each(function() + command('%bwipeout!') + rmdir(swapdir) + end) + + it("saves to custom 'directory' and (R)ecovers #1836", function() + local testfile = 'Xtest_recover_file1' + -- Put swapdir at the start of the 'directory' list. #1836 + -- Note: `set swapfile` *must* go after `set directory`: otherwise it may + -- attempt to create a swapfile in different directory. + local init = [[ + set directory^=]]..swapdir:gsub([[\]], [[\\]])..[[// + set swapfile fileformat=unix undolevels=-1 + ]] + + source(init) + command('edit! '..testfile) + feed('isometext<esc>') + command('preserve') + source('redir => g:swapname | silent swapname | redir END') + + local swappath1 = eval('g:swapname') + + -- Start another Nvim instance. + local nvim2 = spawn({nvim_prog, '-u', 'NONE', '-i', 'NONE', '--embed'}, + true) + set_session(nvim2) + + source(init) + + -- Use the "SwapExists" event to choose the (R)ecover choice at the dialog. + command('autocmd SwapExists * let v:swapchoice = "r"') + command('silent edit! '..testfile) + source('redir => g:swapname | silent swapname | redir END') + + local swappath2 = eval('g:swapname') + + expect('sometext') + -- swapfile from session 1 should end in .swp + eq(testfile..'.swp', string.match(swappath1, '[^%%]+$')) + -- swapfile from session 2 should end in .swo + eq(testfile..'.swo', string.match(swappath2, '[^%%]+$')) + -- Verify that :swapname was not truncated (:help 'shortmess'). + ok(nil == string.find(swappath1, '%.%.%.')) + ok(nil == string.find(swappath2, '%.%.%.')) + end) + +end) + +describe('swapfile detection', function() + local swapdir = lfs.currentdir()..'/Xtest_swapdialog_dir' + before_each(function() + clear() + rmdir(swapdir) + lfs.mkdir(swapdir) + end) + after_each(function() + command('%bwipeout!') + rmdir(swapdir) + end) + + it('always show swapfile dialog #8840 #9027', function() + local testfile = 'Xtest_swapdialog_file1' + -- Put swapdir at the start of the 'directory' list. #1836 + -- Note: `set swapfile` *must* go after `set directory`: otherwise it may + -- attempt to create a swapfile in different directory. + local init = [[ + set directory^=]]..swapdir:gsub([[\]], [[\\]])..[[// + set swapfile fileformat=unix undolevels=-1 hidden + ]] + + local expected_no_dialog = '^'..(' '):rep(256)..'|\n' + for _=1,37 do + expected_no_dialog = expected_no_dialog..'~'..(' '):rep(255)..'|\n' + end + expected_no_dialog = expected_no_dialog..testfile..(' '):rep(216)..'0,0-1 All|\n' + expected_no_dialog = expected_no_dialog..(' '):rep(256)..'|\n' + + source(init) + command('edit! '..testfile) + feed('isometext<esc>') + command('preserve') + + -- Start another Nvim instance. + local nvim2 = spawn({nvim_prog, '-u', 'NONE', '-i', 'NONE', '--embed'}, + true) + set_session(nvim2) + local screen2 = Screen.new(256, 40) + screen2:attach() + source(init) + + -- With shortmess+=F + command('set shortmess+=F') + feed(':edit '..testfile..'<CR>') + screen2:expect{any=[[E325: ATTENTION.*]]..'\n'..[[Found a swap file by the name ".*]] + ..[[Xtest_swapdialog_dir[/\].*]]..testfile..[[%.swp"]]} + feed('e') -- Chose "Edit" at the swap dialog. + screen2:expect(expected_no_dialog) + + -- With :silent and shortmess+=F + feed(':silent edit %<CR>') + screen2:expect{any=[[Found a swap file by the name ".*]] + ..[[Xtest_swapdialog_dir[/\].*]]..testfile..[[%.swp"]]} + feed('e') -- Chose "Edit" at the swap dialog. + screen2:expect(expected_no_dialog) + + -- With :silent! and shortmess+=F + feed(':silent! edit %<CR>') + screen2:expect{any=[[Found a swap file by the name ".*]] + ..[[Xtest_swapdialog_dir[/\].*]]..testfile..[[%.swp"]]} + feed('e') -- Chose "Edit" at the swap dialog. + screen2:expect(expected_no_dialog) + + -- With API (via eval/VimL) call and shortmess+=F + feed(':call nvim_command("edit %")<CR>') + screen2:expect{any=[[Found a swap file by the name ".*]] + ..[[Xtest_swapdialog_dir[/\].*]]..testfile..[[%.swp"]]} + feed('e') -- Chose "Edit" at the swap dialog. + feed('<c-c>') + screen2:expect(expected_no_dialog) + end) +end) diff --git a/test/functional/options/shortmess_spec.lua b/test/functional/options/shortmess_spec.lua index 96823476de..8ea9a19464 100644 --- a/test/functional/options/shortmess_spec.lua +++ b/test/functional/options/shortmess_spec.lua @@ -1,43 +1,96 @@ local helpers = require('test.functional.helpers')(after_each) local Screen = require('test.functional.ui.screen') +local clear = helpers.clear local command = helpers.command -local clear, feed_command = helpers.clear, helpers.feed_command - -if helpers.pending_win32(pending) then return end +local eq = helpers.eq +local eval = helpers.eval +local feed = helpers.feed describe("'shortmess'", function() local screen before_each(function() clear() - screen = Screen.new(25, 5) + screen = Screen.new(42, 5) screen:attach() end) - after_each(function() - screen:detach() - end) - describe('"F" flag', function() - it('hides messages about the files read', function() - command("set shortmess-=F") - feed_command('e test') + it('hides :edit fileinfo messages', function() + command('set hidden') + command('set shortmess-=F') + feed(':edit foo<CR>') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + "foo" [New File] | + ]]) + eq(1, eval('bufnr("%")')) + + command('set shortmess+=F') + feed(':edit bar<CR>') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + :edit bar | + ]]) + eq(2, eval('bufnr("%")')) + end) + + it('hides :bnext, :bprevious fileinfo messages', function() + command('set hidden') + command('set shortmess-=F') + feed(':edit foo<CR>') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + "foo" [New File] | + ]]) + eq(1, eval('bufnr("%")')) + feed(':edit bar<CR>') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + "bar" [New File] | + ]]) + eq(2, eval('bufnr("%")')) + feed(':bprevious<CR>') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + "foo" [New file] --No lines in buffer-- | + ]]) + eq(1, eval('bufnr("%")')) + + command('set shortmess+=F') + feed(':bnext<CR>') screen:expect([[ - ^ | - ~ | - ~ | - ~ | - "test" is a directory | + ^ | + ~ | + ~ | + ~ | + :bnext | ]]) - feed_command('set shortmess=F') - feed_command('e test') + eq(2, eval('bufnr("%")')) + feed(':bprevious<CR>') screen:expect([[ - ^ | - ~ | - ~ | - ~ | - :e test | + ^ | + ~ | + ~ | + ~ | + :bprevious | ]]) + eq(1, eval('bufnr("%")')) end) end) end) diff --git a/test/functional/ui/highlight_spec.lua b/test/functional/ui/highlight_spec.lua index 4b6fbc0d74..7f3bf3e97b 100644 --- a/test/functional/ui/highlight_spec.lua +++ b/test/functional/ui/highlight_spec.lua @@ -40,24 +40,24 @@ describe('highlight: `:syntax manual`', function() end) it("works with buffer switch and 'hidden'", function() - feed_command('e tmp1.vim') - feed_command('e Xtest-functional-ui-highlight.tmp.vim') - feed_command('filetype on') - feed_command('syntax manual') - feed_command('set ft=vim') - feed_command('set syntax=ON') + command('e tmp1.vim') + command('e Xtest-functional-ui-highlight.tmp.vim') + command('filetype on') + command('syntax manual') + command('set ft=vim') + command('set syntax=ON') feed('iecho 1<esc>0') - feed_command('set hidden') - feed_command('w') - feed_command('bn') + command('set hidden') + command('w') + command('bn') feed_command('bp') screen:expect([[ {1:^echo} 1 | {0:~ }| {0:~ }| {0:~ }| - <f 1 --100%-- col 1 | + :bp | ]]) end) @@ -919,7 +919,7 @@ describe("'winhighlight' highlight", function() aa | {0:~ }| {4:[No Name] [+] }| - <f 1 --100%-- col 1 | + | ]]) end) |