2023-08-27 11:14:44 +02:00
|
|
|
" Test for the termdebug plugin
|
|
|
|
|
|
|
|
source check.vim
|
|
|
|
|
|
|
|
CheckUnix
|
|
|
|
CheckFeature terminal
|
|
|
|
CheckExecutable gdb
|
|
|
|
CheckExecutable gcc
|
|
|
|
|
|
|
|
let g:GDB = exepath('gdb')
|
|
|
|
if g:GDB->empty()
|
2023-08-27 19:59:28 +02:00
|
|
|
throw 'Skipped: gdb is not found in $PATH'
|
2023-08-27 11:14:44 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
let g:GCC = exepath('gcc')
|
|
|
|
if g:GCC->empty()
|
2023-08-27 19:59:28 +02:00
|
|
|
throw 'Skipped: gcc is not found in $PATH'
|
2023-08-27 11:14:44 +02:00
|
|
|
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 assert_equal(3, winnr('$'))
|
|
|
|
let gdb_buf = winbufnr(1)
|
|
|
|
wincmd b
|
|
|
|
Break 9
|
|
|
|
call term_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
|
2023-08-27 21:48:29 +02:00
|
|
|
call term_wait(gdb_buf, 400)
|
2023-08-27 11:14:44 +02:00
|
|
|
redraw!
|
|
|
|
call 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)
|
|
|
|
Finish
|
|
|
|
call term_wait(gdb_buf)
|
|
|
|
redraw!
|
|
|
|
call 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
|
|
|
|
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
|