aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-02-15 07:26:55 +0800
committerGitHub <noreply@github.com>2023-02-15 07:26:55 +0800
commit05faa8f30ad770d4e4ead41cec601ccced8fb97f (patch)
tree23680deec8f90b7159c23f19f0a7a042ac1941f7
parent556f8646c01d1751cf39fe4df9c622899dceab9d (diff)
downloadrneovim-05faa8f30ad770d4e4ead41cec601ccced8fb97f.tar.gz
rneovim-05faa8f30ad770d4e4ead41cec601ccced8fb97f.tar.bz2
rneovim-05faa8f30ad770d4e4ead41cec601ccced8fb97f.zip
test: make expect_unchanged() less confusing (#22255)
Problem: The sleep before collecting the initial screen state is confusing and may lead to unexpected success if it comes after a blocking RPC call. Solution: Remove that sleep and add an "intermediate" argument.
-rw-r--r--test/functional/legacy/search_stat_spec.lua8
-rw-r--r--test/functional/lua/ui_event_spec.lua9
-rw-r--r--test/functional/ui/fold_spec.lua9
-rw-r--r--test/functional/ui/inccommand_spec.lua3
-rw-r--r--test/functional/ui/screen.lua12
-rw-r--r--test/functional/ui/searchhl_spec.lua1
-rw-r--r--test/functional/vimscript/timer_spec.lua10
7 files changed, 19 insertions, 33 deletions
diff --git a/test/functional/legacy/search_stat_spec.lua b/test/functional/legacy/search_stat_spec.lua
index 9fcf798836..06e0b2320a 100644
--- a/test/functional/legacy/search_stat_spec.lua
+++ b/test/functional/legacy/search_stat_spec.lua
@@ -1,7 +1,6 @@
local helpers = require('test.functional.helpers')(after_each)
local Screen = require('test.functional.ui.screen')
local clear, feed, exec, command = helpers.clear, helpers.feed, helpers.exec, helpers.command
-local poke_eventloop = helpers.poke_eventloop
describe('search stat', function()
local screen
@@ -80,12 +79,11 @@ describe('search stat', function()
{1:~ }|
/foo [1/2] |
]])
+ -- Note: there is an intermediate state where the search stat disappears.
feed('n')
- poke_eventloop()
- screen:expect_unchanged()
+ screen:expect_unchanged(true)
feed('n')
- poke_eventloop()
- screen:expect_unchanged()
+ screen:expect_unchanged(true)
end)
-- oldtest: Test_search_stat_then_gd()
diff --git a/test/functional/lua/ui_event_spec.lua b/test/functional/lua/ui_event_spec.lua
index 6481da900e..de436771f9 100644
--- a/test/functional/lua/ui_event_spec.lua
+++ b/test/functional/lua/ui_event_spec.lua
@@ -77,13 +77,8 @@ describe('vim.ui_attach', function()
}
feed '<c-y>'
- screen:expect{grid=[[
- foobar^ |
- {1:~ }|
- {1:~ }|
- {1:~ }|
- {2:-- INSERT --} |
- ]], intermediate=true}
+ -- There is an intermediate state where the 'showmode' message disappears.
+ screen:expect_unchanged(true)
expect_events {
{ "popupmenu_hide" };
}
diff --git a/test/functional/ui/fold_spec.lua b/test/functional/ui/fold_spec.lua
index 420a4654f8..c8a3397a86 100644
--- a/test/functional/ui/fold_spec.lua
+++ b/test/functional/ui/fold_spec.lua
@@ -10,7 +10,6 @@ local meths = helpers.meths
local exec = helpers.exec
local exec_lua = helpers.exec_lua
local assert_alive = helpers.assert_alive
-local poke_eventloop = helpers.poke_eventloop
local content1 = [[
@@ -30,8 +29,6 @@ describe("folded lines", function()
local function with_ext_multigrid(multigrid)
local screen
before_each(function()
- clear()
- command('hi VertSplit gui=reverse')
screen = Screen.new(45, 8)
screen:attach({rgb=true, ext_multigrid=multigrid})
screen:set_default_attr_ids({
@@ -166,12 +163,10 @@ describe("folded lines", function()
end
-- CursorLine is applied correctly with screenrow motions #22232
feed("jgk")
- poke_eventloop()
- screen:expect_unchanged()
+ screen:expect_unchanged(true)
-- CursorLine is applied correctly when closing a fold when cursor is not at fold start
feed("zo4Gzc")
- poke_eventloop()
- screen:expect_unchanged()
+ screen:expect_unchanged(true)
command("set cursorlineopt=line")
if multigrid then
screen:expect([[
diff --git a/test/functional/ui/inccommand_spec.lua b/test/functional/ui/inccommand_spec.lua
index 6fbf9b72c8..96634be327 100644
--- a/test/functional/ui/inccommand_spec.lua
+++ b/test/functional/ui/inccommand_spec.lua
@@ -2886,7 +2886,8 @@ it(':substitute with inccommand during :terminal activity', function()
feed('gg')
feed(':%s/foo/ZZZ')
sleep(20) -- Allow some terminal activity.
- helpers.poke_eventloop()
+ poke_eventloop()
+ screen:sleep(0)
screen:expect_unchanged()
end)
end)
diff --git a/test/functional/ui/screen.lua b/test/functional/ui/screen.lua
index a059fb5b89..7760f26fca 100644
--- a/test/functional/ui/screen.lua
+++ b/test/functional/ui/screen.lua
@@ -470,15 +470,19 @@ screen:redraw_debug() to show all intermediate screen states. ]])
end, expected)
end
-function Screen:expect_unchanged(waittime_ms, ignore_attrs, request_cb)
+function Screen:expect_unchanged(intermediate, waittime_ms, ignore_attrs)
waittime_ms = waittime_ms and waittime_ms or 100
-- Collect the current screen state.
- self:sleep(0, request_cb)
local kwargs = self:get_snapshot(nil, ignore_attrs)
- -- Check that screen state does not change.
- kwargs.unchanged = true
+ if intermediate then
+ kwargs.intermediate = true
+ else
+ kwargs.unchanged = true
+ end
+
kwargs.timeout = waittime_ms
+ -- Check that screen state does not change.
self:expect(kwargs)
end
diff --git a/test/functional/ui/searchhl_spec.lua b/test/functional/ui/searchhl_spec.lua
index 404cc6d043..916a5eb537 100644
--- a/test/functional/ui/searchhl_spec.lua
+++ b/test/functional/ui/searchhl_spec.lua
@@ -317,6 +317,7 @@ describe('search highlighting', function()
]])
feed('/foo')
helpers.poke_eventloop()
+ screen:sleep(0)
screen:expect_unchanged()
end)
diff --git a/test/functional/vimscript/timer_spec.lua b/test/functional/vimscript/timer_spec.lua
index 1818a71ea2..a58cd6ae7f 100644
--- a/test/functional/vimscript/timer_spec.lua
+++ b/test/functional/vimscript/timer_spec.lua
@@ -251,15 +251,7 @@ describe('timers', function()
:good^ |
]])
command('let g:val = 1')
-
- screen:expect{grid=[[
- |
- {0:~ }|
- {0:~ }|
- {0:~ }|
- {0:~ }|
- :good^ |
- ]], intermediate=true, timeout=load_adjust(200)}
+ screen:expect_unchanged(true, load_adjust(200))
eq(2, eval('g:val'))
end)