mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
tests/ui: warn when the correct state was seen temporarily.
Helped-by: Thiago de Arruda <tpadilha84@gmail.com>
This commit is contained in:
parent
e5c4c4bca2
commit
1e7624d2a0
@ -230,20 +230,41 @@ end
|
||||
|
||||
function Screen:wait(check, timeout)
|
||||
local err, checked = false
|
||||
local success_seen = false
|
||||
local failure_after_success = false
|
||||
local function notification_cb(method, args)
|
||||
assert(method == 'redraw')
|
||||
self:_redraw(args)
|
||||
err = check()
|
||||
checked = true
|
||||
if not err then
|
||||
success_seen = true
|
||||
stop()
|
||||
elseif success_seen and #args > 0 then
|
||||
failure_after_success = true
|
||||
--print(require('inspect')(args))
|
||||
end
|
||||
|
||||
return true
|
||||
end
|
||||
run(nil, notification_cb, nil, timeout or default_screen_timeout)
|
||||
if not checked then
|
||||
err = check()
|
||||
end
|
||||
|
||||
if failure_after_success then
|
||||
print([[
|
||||
Warning: Screen changes have been received after the expected state was seen.
|
||||
This is probably due to an indeterminism in the test. Try adding
|
||||
`wait()` (or even a separate `screen:expect(...)`) at a point of possible
|
||||
indeterminism, typically in between a `feed()` or `execute()` which is non-
|
||||
synchronous, and a synchronous api call.
|
||||
]])
|
||||
local tb = debug.traceback()
|
||||
local index = string.find(tb, '\n%s*%[C]')
|
||||
print(string.sub(tb,1,index))
|
||||
end
|
||||
|
||||
if err then
|
||||
assert(false, err)
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user