mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
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.
This commit is contained in:
parent
556f8646c0
commit
05faa8f30a
@ -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()
|
||||
|
@ -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" };
|
||||
}
|
||||
|
@ -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([[
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
@ -317,6 +317,7 @@ describe('search highlighting', function()
|
||||
]])
|
||||
feed('/foo')
|
||||
helpers.poke_eventloop()
|
||||
screen:sleep(0)
|
||||
screen:expect_unchanged()
|
||||
end)
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user