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:
zeertzjq 2023-02-15 07:26:55 +08:00 committed by GitHub
parent 556f8646c0
commit 05faa8f30a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 19 additions and 33 deletions

View File

@ -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()

View File

@ -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" };
}

View File

@ -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([[

View File

@ -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)

View File

@ -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

View File

@ -317,6 +317,7 @@ describe('search highlighting', function()
]])
feed('/foo')
helpers.poke_eventloop()
screen:sleep(0)
screen:expect_unchanged()
end)

View File

@ -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)