aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/functional/api/server_notifications_spec.lua16
-rw-r--r--test/functional/ui/fold_spec.lua70
-rw-r--r--test/functional/ui/sign_spec.lua66
3 files changed, 152 insertions, 0 deletions
diff --git a/test/functional/api/server_notifications_spec.lua b/test/functional/api/server_notifications_spec.lua
index 29cd38ef0d..9ee2570798 100644
--- a/test/functional/api/server_notifications_spec.lua
+++ b/test/functional/api/server_notifications_spec.lua
@@ -3,6 +3,8 @@ local eq, clear, eval, command, nvim, next_msg =
helpers.eq, helpers.clear, helpers.eval, helpers.command, helpers.nvim,
helpers.next_msg
local meths = helpers.meths
+local exec_lua = helpers.exec_lua
+local retry = helpers.retry
describe('notify', function()
local channel
@@ -72,4 +74,18 @@ describe('notify', function()
nvim('unsubscribe', 'event1')
eq(2, eval('1+1')) -- Still alive?
end)
+
+ it('cancels stale events on channel close', function()
+ if helpers.pending_win32(pending) then return end
+ local catchan = eval("jobstart(['cat'], {'rpc': v:true})")
+ eq({id=catchan, stream='job', mode='rpc', client = {}}, exec_lua ([[
+ vim.rpcnotify(..., "nvim_call_function", 'chanclose', {..., 'rpc'})
+ vim.rpcnotify(..., "nvim_subscribe", "daily_rant")
+ return vim.api.nvim_get_chan_info(...)
+ ]], catchan))
+ eq(2, eval('1+1')) -- Still alive?
+ eq({false, 'Invalid channel: '..catchan},
+ exec_lua ([[ return {pcall(vim.rpcrequest, ..., 'nvim_eval', '1+1')}]], catchan))
+ retry(nil, 3000, function() eq({}, meths.get_chan_info(catchan)) end) -- cat be dead :(
+ end)
end)
diff --git a/test/functional/ui/fold_spec.lua b/test/functional/ui/fold_spec.lua
index 7b05e90459..6ce8b33a63 100644
--- a/test/functional/ui/fold_spec.lua
+++ b/test/functional/ui/fold_spec.lua
@@ -886,6 +886,41 @@ describe("folded lines", function()
|
]])
end
+ command("set foldcolumn=auto")
+ if multigrid then
+ screen:expect{grid=[[
+ ## grid 1
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [3:---------------------------------------------]|
+ ## grid 2
+ {7:+}{5:^+-- 2 lines: line 1························}|
+ {7: }line 3 |
+ {7: }line 4 |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ ## grid 3
+ |
+ ]], unchanged=true}
+ else
+ screen:expect{grid=[[
+ {7:+}{5:^+-- 2 lines: line 1························}|
+ {7: }line 3 |
+ {7: }line 4 |
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ |
+ ]], unchanged=true}
+ end
-- fdc should not change with a new fold as the maximum is 1
feed("zf3j")
@@ -924,6 +959,41 @@ describe("folded lines", function()
]])
end
+ command("set foldcolumn=auto:1")
+ if multigrid then screen:expect{grid=[[
+ ## grid 1
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [2:---------------------------------------------]|
+ [3:---------------------------------------------]|
+ ## grid 2
+ {7:+}{5:^+-- 4 lines: line 1························}|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ ## grid 3
+ |
+ ]], unchanged=true}
+ else
+ screen:expect{grid=[[
+ {7:+}{5:^+-- 4 lines: line 1························}|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ {1:~ }|
+ |
+ ]], unchanged=true}
+ end
+
-- relax the maximum fdc thus fdc should expand to
-- accomodate the current number of folds
command("set foldcolumn=auto:4")
diff --git a/test/functional/ui/sign_spec.lua b/test/functional/ui/sign_spec.lua
index 0ed62b21b2..d1b8de5e4e 100644
--- a/test/functional/ui/sign_spec.lua
+++ b/test/functional/ui/sign_spec.lua
@@ -76,6 +76,28 @@ describe('Signs', function()
]])
end)
+ it('allows signs with no text', function()
+ feed('ia<cr>b<cr><esc>')
+ command('sign define piet1 text= texthl=Search')
+ command('sign place 1 line=1 name=piet1 buffer=1')
+ screen:expect([[
+ a |
+ b |
+ ^ |
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ |
+ ]])
+ end)
+
it('can be called right after :split', function()
feed('ia<cr>b<cr>c<cr><esc>gg')
-- This used to cause a crash due to :sign using a special redraw
@@ -244,6 +266,50 @@ describe('Signs', function()
]]}
end)
+ it('ignores signs with no icon and text when calculting the signcolumn width', function()
+ feed('ia<cr>b<cr>c<cr><esc>')
+ command('set number')
+ command('set signcolumn=auto:2')
+ command('sign define pietSearch text=>> texthl=Search')
+ command('sign define pietError text= texthl=Error')
+ command('sign place 2 line=1 name=pietError buffer=1')
+ -- no signcolumn with only empty sign
+ screen:expect([[
+ {6: 1 }a |
+ {6: 2 }b |
+ {6: 3 }c |
+ {6: 4 }^ |
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ |
+ ]])
+ -- single column with 1 sign with text and one sign without
+ command('sign place 1 line=1 name=pietSearch buffer=1')
+ screen:expect([[
+ {1:>>}{6: 1 }a |
+ {2: }{6: 2 }b |
+ {2: }{6: 3 }c |
+ {2: }{6: ^4 } |
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ |
+ ]])
+ end)
+
it('can have 32bit sign IDs', function()
command('sign define piet text=>> texthl=Search')
command('sign place 100000 line=1 name=piet buffer=1')