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 <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Yasuhiro Matsumoto
2026-03-20 22:34:11 +00:00
committed by Christian Brabandt
parent b1a247d659
commit 2b7b745bb5
2 changed files with 5 additions and 16 deletions
+3 -16
View File
@@ -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
+2
View File
@@ -734,6 +734,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
214,
/**/
213,
/**/