mirror of
https://github.com/neovim/neovim.git
synced 2026-07-18 23:21:35 +00:00
vim-patch:9.2.0598: tests: Test_statusline() is flaky (#40128)
Problem: Test_statusline() occasionally fails in CI, reading buffer text
instead of the status line (e.g. '9012...' instead of '57,39').
Solution: In s:get_statusline() redraw unconditionally and read the screen
cells directly with screenstring(), instead of relying on
ScreenLines() whose own redraw! can process events and change the
window layout between the redraw and reading the cells. This
matches the already-stable s:Assert_match_statusline() helper in
test_statuslineopt.vim.
closes: vim/vim#20428
db3ce018b5
Co-authored-by: Hirohito Higashi <h.east.727@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,11 +16,15 @@ func TearDown()
|
||||
endfunc
|
||||
|
||||
func s:get_statusline()
|
||||
redraw!
|
||||
if has('gui_running')
|
||||
redraw!
|
||||
sleep 1m
|
||||
endif
|
||||
return ScreenLines(&lines - 1, &columns)[0]
|
||||
" Read the screen directly after redraw! instead of going through
|
||||
" ScreenLines(), whose own redraw! may process events and change the window
|
||||
" layout between here and the screenstring() calls.
|
||||
let row = &lines - 1
|
||||
return join(map(range(1, &columns), 'screenstring(row, v:val)'), '')
|
||||
endfunc
|
||||
|
||||
func StatuslineWithCaughtError()
|
||||
|
||||
Reference in New Issue
Block a user