Commit: patch 9.2.0214: tests: Test_gui_system_term_scroll() is flaky

0 views
Skip to first unread message

Christian Brabandt

unread,
Mar 20, 2026, 6:47:07 PM (3 days ago) Mar 20
to vim...@googlegroups.com
patch 9.2.0214: tests: Test_gui_system_term_scroll() is flaky

Commit: https://github.com/vim/vim/commit/2b7b745bb5bc16c189e21003315bc5525e339ae3
Author: Yasuhiro Matsumoto <matt...@gmail.com>
Date: Fri Mar 20 22:34:11 2026 +0000

patch 9.2.0214: tests: Test_gui_system_term_scroll() is flaky

Problem: tests: Test_gui_system_term_scroll() is flaky
(after: v9.2.0208)
Solution: Fix test (Yasuhiro Matsumoto)

Remove timer-based screen check and use a simple command instead
of ping. The timer could fire before ConPTY initialization was
complete, causing screenstring() to return an empty string.

Check screenstring() directly after the command finishes instead.

related: #19735
closes: #19765

Signed-off-by: Yasuhiro Matsumoto <matt...@gmail.com>
Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim
index 0b0eb0271..c686094ca 100644
--- a/src/testdir/test_gui.vim
+++ b/src/testdir/test_gui.vim
@@ -973,31 +973,18 @@ func Test_gui_system_term_scroll()
call setline(1, repeat(['AAAA'], &lines + 5))
redraw

- " Timer fires during terminal_loop to check the screen while the command
- " is still running. Row 1 should still show buffer content if scrolling
- " is correct.
- let g:system_term_row1 = ''
- func s:CheckScroll(timer)
- let g:system_term_row1 = screenstring(1, 1)
- endfunc
- call timer_start(200, function('s:CheckScroll'))
-
- " Use a command that runs long enough for the timer to fire during
- " terminal_loop. wait_return() returns immediately when sourcing a script,
- " so the timer must fire before the command finishes.
if has('win32')
- !ping -n 2 127.0.0.1 > nul
+ !echo.
else
- !sleep 1
+ !echo
endif

" With the ConPTY scroll bug, the screen scrolled up entirely and row 1
" became blank. With the fix, only the output lines scroll and the buffer
" content remains visible near the top of the screen.
- call assert_equal('A', g:system_term_row1)
+ call assert_equal('A', screenstring(1, 1))

%bwipe!
- delfunc s:CheckScroll
let &guioptions = save_guioptions
endfunc

diff --git a/src/version.c b/src/version.c
index 42ebf261e..3f5c22316 100644
--- a/src/version.c
+++ b/src/version.c
@@ -734,6 +734,8 @@ static char *(features[]) =

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