mirror of
https://github.com/neovim/neovim.git
synced 2025-09-08 04:18:18 +00:00
test: Prevent waiting for already current state.
Some of the UI tests screen:expect() the same screen state twice in a row. This ends up waiting the entire timeout period for a screen redraw event that never happens. So check at the start of screen:wait() that the screen is not already in the desired end state. This shaves a third off the total run-time of the functional tests on FreeBSD. Some of the tests that look for the same state twice are mouse_spec tests, which have their timeouts raised to a quarter of a minute for each screen:expect() in the test.
This commit is contained in:
@@ -259,7 +259,8 @@ screen:redraw_debug() to show all intermediate screen states. ]])
|
|||||||
end
|
end
|
||||||
|
|
||||||
function Screen:wait(check, timeout)
|
function Screen:wait(check, timeout)
|
||||||
local err, checked = false
|
local err = check()
|
||||||
|
local checked = false
|
||||||
local success_seen = false
|
local success_seen = false
|
||||||
local failure_after_success = false
|
local failure_after_success = false
|
||||||
local function notification_cb(method, args)
|
local function notification_cb(method, args)
|
||||||
@@ -277,7 +278,9 @@ function Screen:wait(check, timeout)
|
|||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
run(nil, notification_cb, nil, timeout or self.timeout)
|
if err then
|
||||||
|
run(nil, notification_cb, nil, timeout or self.timeout)
|
||||||
|
end
|
||||||
if not checked then
|
if not checked then
|
||||||
err = check()
|
err = check()
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user