aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-08-06 04:25:55 +0200
committerGitHub <noreply@github.com>2017-08-06 04:25:55 +0200
commit5bec94652c9dd1d8cab260c4dd10e44d3f38f3cd (patch)
treefc61484a30532ef89f24c5b60534dccc56408d17 /test
parent55c0401dfd137a5e173d8551f763cb4c6fed56e1 (diff)
parent3827d5bc713d9ed149bc793f411debb5b89a4eba (diff)
downloadrneovim-5bec94652c9dd1d8cab260c4dd10e44d3f38f3cd.tar.gz
rneovim-5bec94652c9dd1d8cab260c4dd10e44d3f38f3cd.tar.bz2
rneovim-5bec94652c9dd1d8cab260c4dd10e44d3f38f3cd.zip
Merge #7110 from justinmk/preserve-wildmenu
Diffstat (limited to 'test')
-rw-r--r--test/functional/helpers.lua2
-rw-r--r--test/functional/ui/wildmode_spec.lua168
2 files changed, 132 insertions, 38 deletions
diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua
index f4b2a8dfdc..848f1ef477 100644
--- a/test/functional/helpers.lua
+++ b/test/functional/helpers.lua
@@ -367,7 +367,7 @@ end
local function set_shell_powershell()
source([[
set shell=powershell shellquote=\" shellpipe=\| shellredir=>
- set shellcmdflag=\ -NoProfile\ -ExecutionPolicy\ RemoteSigned\ -Command
+ set shellcmdflag=\ -NoLogo\ -NoProfile\ -ExecutionPolicy\ RemoteSigned\ -Command
let &shellxquote=' '
]])
end
diff --git a/test/functional/ui/wildmode_spec.lua b/test/functional/ui/wildmode_spec.lua
index 052cdd55a1..41a751c284 100644
--- a/test/functional/ui/wildmode_spec.lua
+++ b/test/functional/ui/wildmode_spec.lua
@@ -1,57 +1,151 @@
local helpers = require('test.functional.helpers')(after_each)
local Screen = require('test.functional.ui.screen')
local clear, feed, command = helpers.clear, helpers.feed, helpers.command
+local iswin = helpers.iswin
local funcs = helpers.funcs
+local eq = helpers.eq
+local eval = helpers.eval
+local retry = helpers.retry
-if helpers.pending_win32(pending) then return end
-
-describe("'wildmode'", function()
+describe("'wildmenu'", function()
local screen
-
before_each(function()
clear()
screen = Screen.new(25, 5)
screen:attach()
end)
-
after_each(function()
screen:detach()
end)
- describe("'wildmenu'", function()
- it(':sign <tab> shows wildmenu completions', function()
- command('set wildmode=full')
- command('set wildmenu')
- feed(':sign <tab>')
- screen:expect([[
- |
- ~ |
- ~ |
- define jump list > |
- :sign define^ |
- ]])
- end)
+ it(':sign <tab> shows wildmenu completions', function()
+ command('set wildmode=full')
+ command('set wildmenu')
+ feed(':sign <tab>')
+ screen:expect([[
+ |
+ ~ |
+ ~ |
+ define jump list > |
+ :sign define^ |
+ ]])
+ end)
- it('does not crash after cycling back to original text', function()
- command('set wildmode=full')
- feed(':j<Tab><Tab><Tab>')
- screen:expect([[
- |
- ~ |
- ~ |
- join jumps |
- :j^ |
- ]])
- -- This would cause nvim to crash before #6650
- feed('<BS><Tab>')
- screen:expect([[
- |
- ~ |
- ~ |
- ! # & < = > @ > |
- :!^ |
- ]])
+ it('does not crash after cycling back to original text', function()
+ command('set wildmode=full')
+ feed(':j<Tab><Tab><Tab>')
+ screen:expect([[
+ |
+ ~ |
+ ~ |
+ join jumps |
+ :j^ |
+ ]])
+ -- This would cause nvim to crash before #6650
+ feed('<BS><Tab>')
+ screen:expect([[
+ |
+ ~ |
+ ~ |
+ ! # & < = > @ > |
+ :!^ |
+ ]])
+ end)
+
+ it('is preserved during :terminal activity', function()
+ -- Because this test verifies a _lack_ of activity after screen:sleep(), we
+ -- must wait the full timeout. So make it reasonable.
+ screen.timeout = 1000
+
+ command('set wildmenu wildmode=full')
+ command('set scrollback=4')
+ if iswin() then
+ if helpers.pending_win32(pending) then return end
+ -- feed([[:terminal 1,2,3,4,5 | foreach-object -process {echo $_; sleep 0.1}]])
+ else
+ feed([[:terminal for i in $(seq 1 5000); do printf 'foo\nfoo\nfoo\n'; sleep 0.1; done<cr>]])
+ end
+
+ feed([[<C-\><C-N>gg]])
+ feed([[:sign <Tab>]]) -- Invoke wildmenu.
+ screen:sleep(50) -- Allow some terminal output.
+ screen:expect([[
+ foo |
+ foo |
+ foo |
+ define jump list > |
+ :sign define^ |
+ ]])
+
+ -- cmdline CTRL-D display should also be preserved.
+ feed([[<C-\><C-N>]])
+ feed([[:sign <C-D>]]) -- Invoke cmdline CTRL-D.
+ screen:sleep(50) -- Allow some terminal output.
+ screen:expect([[
+ :sign |
+ define place |
+ jump undefine |
+ list unplace |
+ :sign ^ |
+ ]])
+
+ -- Exiting cmdline should show the buffer.
+ feed([[<C-\><C-N>]])
+ screen:expect([[
+ ^foo |
+ foo |
+ foo |
+ foo |
+ |
+ ]])
+ end)
+
+ it('ignores :redrawstatus called from a timer #7108', function()
+ -- Because this test verifies a _lack_ of activity after screen:sleep(), we
+ -- must wait the full timeout. So make it reasonable.
+ screen.timeout = 1000
+
+ command('set wildmenu wildmode=full')
+ command([[call timer_start(10, {->execute('redrawstatus')}, {'repeat':-1})]])
+ feed([[<C-\><C-N>]])
+ feed([[:sign <Tab>]]) -- Invoke wildmenu.
+ screen:sleep(30) -- Allow some timer activity.
+ screen:expect([[
+ |
+ ~ |
+ ~ |
+ define jump list > |
+ :sign define^ |
+ ]])
+ end)
+
+ it('with laststatus=0, :vsplit, :term #2255', function()
+ -- Because this test verifies a _lack_ of activity after screen:sleep(), we
+ -- must wait the full timeout. So make it reasonable.
+ screen.timeout = 1000
+
+ if not iswin() then
+ command('set shell=sh') -- Need a predictable "$" prompt.
+ end
+ command('set laststatus=0')
+ command('vsplit')
+ command('term')
+
+ -- Check for a shell prompt to verify that the terminal loaded.
+ retry(nil, nil, function()
+ if iswin() then
+ eq('Microsoft', eval("matchstr(join(getline(1, '$')), 'Microsoft')"))
+ else
+ eq('$', eval([[matchstr(getline(1), '\$')]]))
+ end
end)
+
+ feed([[<C-\><C-N>]])
+ feed([[:<Tab>]]) -- Invoke wildmenu.
+ screen:sleep(10) -- Flush
+ -- Check only the last 2 lines, because the shell output is
+ -- system-dependent.
+ screen:expect('! # & < = > @ > \n:!^', nil, nil, nil, true)
end)
end)