Files
neovim/test/old/testdir/test_plugin_matchparen.vim
zeertzjq 3210315559 vim-patch:9.2.0426: tests: still some flaky screendump tests
Problem:  tests: still some flaky screendump tests
          (James McCoy)
Solution: Replace flaky VerifyScreenDump checks with assert_* assertions
          for Test_visual_block_scroll and Test_scrolloffpad_with_folds,
          and remove the now-unused dump files, mark those tests as
          flaky (which happened previously for screendump tests
          automatically) (Yasuhiro Matsumoto).

fixes:   vim/vim#20096
related: vim/vim#20095

cf5d7102b9

Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
2026-07-02 21:07:19 +08:00

211 lines
6.2 KiB
VimL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

" Test for the matchparen plugin
if !has('gui_running') && has('unix')
" set term=ansi
endif
source view_util.vim
source check.vim
source screendump.vim
" Test for scrolling that modifies buffer during visual block
func Test_visual_block_scroll()
CheckRunVimInTerminal
let g:test_is_flaky = 1
let lines =<< trim END
source $VIMRUNTIME/plugin/matchparen.vim
set scrolloff=1
call setline(1, ['a', 'b', 'c', 'd', 'e', '', '{', '}', '{', 'f', 'g', '}'])
call cursor(5, 1)
END
let filename = 'Xvisualblockmodifiedscroll'
call writefile(lines, filename, 'D')
let buf = RunVimInTerminal('-S '.filename, #{rows: 7})
call term_sendkeys(buf, "V\<C-D>\<C-D>")
call WaitForAssert({-> assert_equal('{', trim(term_getline(buf, 1)))}, 1000)
call assert_equal('}', trim(term_getline(buf, 2)))
call assert_equal('{', trim(term_getline(buf, 3)))
call assert_equal('f', trim(term_getline(buf, 4)))
call assert_equal('g', trim(term_getline(buf, 5)))
call assert_equal('}', trim(term_getline(buf, 6)))
call assert_match('VISUAL LINE .*1,1\s\+Bot', term_getline(buf, 7))
call StopVimInTerminal(buf)
endfunc
" Test for clearing paren highlight when switching buffers
func Test_matchparen_clear_highlight()
CheckScreendump
let lines =<< trim END
source $VIMRUNTIME/plugin/matchparen.vim
set hidden
call setline(1, ['()'])
normal 0
func OtherBuffer()
enew
exe "normal iaa\<Esc>0"
endfunc
END
call writefile(lines, 'XMatchparenClear', 'D')
let buf = RunVimInTerminal('-S XMatchparenClear', #{rows: 5})
call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_1', {})
call term_sendkeys(buf, ":call OtherBuffer()\<CR>:\<Esc>")
call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_2', {})
call term_sendkeys(buf, "\<C-^>:\<Esc>")
call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_1', {})
call term_sendkeys(buf, "\<C-^>:\<Esc>")
call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_2', {})
call StopVimInTerminal(buf)
endfunc
" Test for matchparen highlight when switching buffer in win_execute()
func Test_matchparen_win_execute()
CheckScreendump
let lines =<< trim END
source $VIMRUNTIME/plugin/matchparen.vim
let s:win = win_getid()
call setline(1, '{}')
split
func SwitchBuf()
call win_execute(s:win, 'enew | buffer #')
endfunc
END
call writefile(lines, 'XMatchparenWinExecute', 'D')
let buf = RunVimInTerminal('-S XMatchparenWinExecute', #{rows: 5})
call VerifyScreenDump(buf, 'Test_matchparen_win_execute_1', {})
" Switching buffer away and back shouldn't change matchparen highlight.
call term_sendkeys(buf, ":call SwitchBuf()\<CR>:\<Esc>")
call VerifyScreenDump(buf, 'Test_matchparen_win_execute_1', {})
call StopVimInTerminal(buf)
endfunc
" Test for scrolling that modifies buffer during visual block
func Test_matchparen_pum_clear()
CheckScreendump
let lines =<< trim END
source $VIMRUNTIME/plugin/matchparen.vim
set completeopt=menuone
call setline(1, ['aa', 'aaa', 'aaaa', '(a)'])
call cursor(4, 3)
END
let filename = 'Xmatchparen'
call writefile(lines, filename, 'D')
let buf = RunVimInTerminal('-S '.filename, #{rows: 10})
call term_sendkeys(buf, "i\<C-N>\<C-N>")
call VerifyScreenDump(buf, 'Test_matchparen_pum_clear_1', {})
call StopVimInTerminal(buf)
endfunc
" Test that matchparen works with multibyte chars in 'matchpairs'
func Test_matchparen_mbyte()
CheckScreendump
let lines =<< trim END
source $VIMRUNTIME/plugin/matchparen.vim
call setline(1, ['aaaaaaaa', 'bbbbcc'])
set matchpairs+=:
END
call writefile(lines, 'XmatchparenMbyte', 'D')
let buf = RunVimInTerminal('-S XmatchparenMbyte', #{rows: 10})
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_1', {})
call term_sendkeys(buf, "$")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_2', {})
call term_sendkeys(buf, "j")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_3', {})
call term_sendkeys(buf, "2h")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_4', {})
call term_sendkeys(buf, "0")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_5', {})
call term_sendkeys(buf, "kA")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_6', {})
call term_sendkeys(buf, "\<Down>")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_7', {})
call term_sendkeys(buf, "\<C-W>")
call VerifyScreenDump(buf, 'Test_matchparen_mbyte_8', {})
call StopVimInTerminal(buf)
endfunc
" Test for ignoring certain parenthesis
func Test_matchparen_ignore_sh_case()
CheckScreendump
let lines =<< trim END
source $VIMRUNTIME/plugin/matchparen.vim
set ft=sh
call setline(1, [
\ '#!/bin/sh',
\ 'SUSUWU_PRINT() (',
\ ' case "${LEVEL}" in',
\ ' "$SUSUWU_SH_NOTICE")',
\ ' ${SUSUWU_S} && return 1',
\ ' ;;',
\ ' "$SUSUWU_SH_DEBUG")',
\ ' (! ${SUSUWU_VERBOSE}) && return 1',
\ ' ;;',
\ ' esac',
\ ' # snip',
\ ')'
\ ])
call cursor(4, 26)
END
let filename = 'Xmatchparen_sh'
call writefile(lines, filename, 'D')
let buf = RunVimInTerminal('-S '.filename, #{rows: 10})
call VerifyScreenDump(buf, 'Test_matchparen_sh_case_1', {})
" Send keys one by one so that CursorMoved is triggered.
for c in 'A foobar'
call term_sendkeys(buf, c)
call term_wait(buf)
endfor
call VerifyScreenDump(buf, 'Test_matchparen_sh_case_2', {})
call StopVimInTerminal(buf)
endfunc
" Test for the WinScrolled event
func Test_scroll_winscrolled()
CheckScreendump
let lines =<< trim END
source $VIMRUNTIME/plugin/matchparen.vim
set scrolloff=1
call setline(1, ['foobar {', '', '', '', '}'])
call cursor(5, 1)
END
let filename = 'Xmatchparen_winscrolled'
call writefile(lines, filename, 'D')
let buf = RunVimInTerminal('-S '.filename, #{rows: 7})
call VerifyScreenDump(buf, 'Test_matchparen_winscrolled1', {})
call term_sendkeys(buf, "\<C-E>")
call VerifyScreenDump(buf, 'Test_matchparen_winscrolled2', {})
call term_sendkeys(buf, "\<C-Y>")
call VerifyScreenDump(buf, 'Test_matchparen_winscrolled1', {})
call StopVimInTerminal(buf)
endfunc
" vim: shiftwidth=2 sts=2 expandtab