patch 9.2.0598: tests: Test_statusline() is flaky

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: #20428

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Hirohito Higashi
2026-06-05 11:46:00 +00:00
committed by Christian Brabandt
parent c8c63673bc
commit db3ce018b5
2 changed files with 8 additions and 2 deletions
+6 -2
View File
@@ -14,11 +14,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()
+2
View File
@@ -729,6 +729,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
598,
/**/
597,
/**/