diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-11-09 07:38:05 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-09 07:38:05 +0800 |
commit | 04187d1cb58a46dff3b490115f38f9120e13d598 (patch) | |
tree | aae0dc0c2f817e438069246f1dcbaabc83667797 /test | |
parent | ed464ba487cc4fbc0c7393bb360580b344673e3d (diff) | |
parent | 89d785e53015d7ba6a7f10e97a750b8d3431d3a9 (diff) | |
download | rneovim-04187d1cb58a46dff3b490115f38f9120e13d598.tar.gz rneovim-04187d1cb58a46dff3b490115f38f9120e13d598.tar.bz2 rneovim-04187d1cb58a46dff3b490115f38f9120e13d598.zip |
Merge pull request #25942 from zeertzjq/vim-9.0.1791
vim-patch:9.0.{1791,1808,1809,1811},ca48202b6f46
Diffstat (limited to 'test')
-rw-r--r-- | test/old/testdir/setup.vim | 5 | ||||
-rw-r--r-- | test/old/testdir/test_termdebug.vim | 121 |
2 files changed, 126 insertions, 0 deletions
diff --git a/test/old/testdir/setup.vim b/test/old/testdir/setup.vim index b0c2a15a3f..7546b342e6 100644 --- a/test/old/testdir/setup.vim +++ b/test/old/testdir/setup.vim @@ -58,6 +58,11 @@ func Ntest_setmouse(row, col) endif endfunc +" roughly equivalent to term_wait() in Vim +func Nterm_wait(buf, time = 10) + execute $'sleep {a:time}m' +endfunc + " Prevent Nvim log from writing to stderr. let $NVIM_LOG_FILE = exists($NVIM_LOG_FILE) ? $NVIM_LOG_FILE : 'Xnvim.log' diff --git a/test/old/testdir/test_termdebug.vim b/test/old/testdir/test_termdebug.vim new file mode 100644 index 0000000000..f3f4104dba --- /dev/null +++ b/test/old/testdir/test_termdebug.vim @@ -0,0 +1,121 @@ +" Test for the termdebug plugin + +source shared.vim +source check.vim + +CheckUnix +" CheckFeature terminal +CheckExecutable gdb +CheckExecutable gcc + +let g:GDB = exepath('gdb') +if g:GDB->empty() + throw 'Skipped: gdb is not found in $PATH' +endif + +let g:GCC = exepath('gcc') +if g:GCC->empty() + throw 'Skipped: gcc is not found in $PATH' +endif + +packadd termdebug + +func Test_termdebug_basic() + let lines =<< trim END + #include <stdio.h> + #include <stdlib.h> + + int isprime(int n) + { + if (n <= 1) + return 0; + + for (int i = 2; i <= n / 2; i++) + if (n % i == 0) + return 0; + + return 1; + } + + int main(int argc, char *argv[]) + { + int n = 7; + + printf("%d is %s prime\n", n, isprime(n) ? "a" : "not a"); + + return 0; + } + END + call writefile(lines, 'XTD_basic.c', 'D') + call system($'{g:GCC} -g -o XTD_basic XTD_basic.c') + + edit XTD_basic.c + Termdebug ./XTD_basic + call WaitForAssert({-> assert_equal(3, winnr('$'))}) + let gdb_buf = winbufnr(1) + wincmd b + Break 9 + call Nterm_wait(gdb_buf) + redraw! + call assert_equal([ + \ {'lnum': 9, 'id': 1014, 'name': 'debugBreakpoint1.0', + \ 'priority': 110, 'group': 'TermDebug'}], + \ sign_getplaced('', #{group: 'TermDebug'})[0].signs) + Run + call Nterm_wait(gdb_buf, 400) + redraw! + call WaitForAssert({-> assert_equal([ + \ {'lnum': 9, 'id': 12, 'name': 'debugPC', 'priority': 110, + \ 'group': 'TermDebug'}, + \ {'lnum': 9, 'id': 1014, 'name': 'debugBreakpoint1.0', + \ 'priority': 110, 'group': 'TermDebug'}], + "\ sign_getplaced('', #{group: 'TermDebug'})[0].signs)}) + \ sign_getplaced('', #{group: 'TermDebug'})[0].signs->reverse())}) + Finish + call Nterm_wait(gdb_buf) + redraw! + call WaitForAssert({-> assert_equal([ + \ {'lnum': 9, 'id': 1014, 'name': 'debugBreakpoint1.0', + \ 'priority': 110, 'group': 'TermDebug'}, + \ {'lnum': 20, 'id': 12, 'name': 'debugPC', + \ 'priority': 110, 'group': 'TermDebug'}], + \ sign_getplaced('', #{group: 'TermDebug'})[0].signs)}) + Continue + + let cn = 0 + " 60 is approx spaceBuffer * 3 + if winwidth(0) <= 78 + 60 + Var + call assert_equal(winnr(), winnr('$')) + call assert_equal(winlayout(), ['col', [['leaf', 1002], ['leaf', 1001], ['leaf', 1000], ['leaf', 1003 + cn]]]) + let cn += 1 + bw! + Asm + call assert_equal(winnr(), winnr('$')) + call assert_equal(winlayout(), ['col', [['leaf', 1002], ['leaf', 1001], ['leaf', 1000], ['leaf', 1003 + cn]]]) + let cn += 1 + bw! + endif + set columns=160 + Var + call assert_equal(winnr(), winnr('$') - 1) + call assert_equal(winlayout(), ['col', [['leaf', 1002], ['leaf', 1001], ['row', [['leaf', 1003 + cn], ['leaf', 1000]]]]]) + let cn += 1 + bw! + Asm + call assert_equal(winnr(), winnr('$') - 1) + call assert_equal(winlayout(), ['col', [['leaf', 1002], ['leaf', 1001], ['row', [['leaf', 1003 + cn], ['leaf', 1000]]]]]) + let cn += 1 + bw! + set columns& + + wincmd t + quit! + redraw! + call assert_equal([], sign_getplaced('', #{group: 'TermDebug'})[0].signs) + + call delete('XTD_basic') + %bw! +endfunc + +" vim: shiftwidth=2 sts=2 expandtab |