Commit: patch 9.2.0598: tests: Test_statusline() is flaky

3 views
Skip to first unread message

Christian Brabandt

unread,
Jun 5, 2026, 1:45:14 PM (5 days ago) Jun 5
to vim...@googlegroups.com
patch 9.2.0598: tests: Test_statusline() is flaky

Commit: https://github.com/vim/vim/commit/db3ce018b5e1b6d0fac482a52f948ba8ca3899fa
Author: Hirohito Higashi <h.eas...@gmail.com>
Date: Fri Jun 5 11:46:00 2026 +0000

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) <nor...@anthropic.com>
Signed-off-by: Hirohito Higashi <h.eas...@gmail.com>
Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/testdir/test_statusline.vim b/src/testdir/test_statusline.vim
index 48c7bb669..d4267ee92 100644
--- a/src/testdir/test_statusline.vim
+++ b/src/testdir/test_statusline.vim
@@ -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()
diff --git a/src/version.c b/src/version.c
index 81bd8d09f..25903a8ed 100644
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 598,
/**/
597,
/**/
Reply all
Reply to author
Forward
0 new messages