mirror of
https://github.com/neovim/neovim.git
synced 2025-09-05 19:08:15 +00:00
vim-patch:8.2.1440: debugger code insufficiently tested
Problem: Debugger code insufficiently tested.
Solution: Add a few more tests. (Yegappan Lakshmanan, closes vim/vim#6700)
16c6232cad
This commit is contained in:
@@ -1145,7 +1145,6 @@ func Test_breakpt_endif_intr()
|
||||
let caught_intr = 0
|
||||
debuggreedy
|
||||
call feedkeys(":call F()\<CR>quit\<CR>", "xt")
|
||||
call F()
|
||||
catch /^Vim:Interrupt$/
|
||||
call assert_match('\.F, line 4', v:throwpoint)
|
||||
let caught_intr = 1
|
||||
@@ -1176,7 +1175,6 @@ func Test_breakpt_else_intr()
|
||||
let caught_intr = 0
|
||||
debuggreedy
|
||||
call feedkeys(":call F()\<CR>quit\<CR>", "xt")
|
||||
call F()
|
||||
catch /^Vim:Interrupt$/
|
||||
call assert_match('\.F, line 4', v:throwpoint)
|
||||
let caught_intr = 1
|
||||
@@ -1205,7 +1203,6 @@ func Test_breakpt_endwhile_intr()
|
||||
let caught_intr = 0
|
||||
debuggreedy
|
||||
call feedkeys(":call F()\<CR>quit\<CR>", "xt")
|
||||
call F()
|
||||
catch /^Vim:Interrupt$/
|
||||
call assert_match('\.F, line 4', v:throwpoint)
|
||||
let caught_intr = 1
|
||||
@@ -1217,38 +1214,24 @@ func Test_breakpt_endwhile_intr()
|
||||
delfunc F
|
||||
endfunc
|
||||
|
||||
" Test for setting a breakpoint on an :endtry where an exception is pending to
|
||||
" be processed and then quit the script. This should generate an interrupt and
|
||||
" the thrown exception should be ignored.
|
||||
func Test_breakpt_endtry_intr()
|
||||
func F()
|
||||
try
|
||||
let g:Xpath ..= 'a'
|
||||
throw "abc"
|
||||
endtry
|
||||
invalid_command
|
||||
" Test for setting a breakpoint on a script local function
|
||||
func Test_breakpt_scriptlocal_func()
|
||||
let g:Xpath = ''
|
||||
func s:G()
|
||||
let g:Xpath ..= 'a'
|
||||
endfunc
|
||||
|
||||
let g:Xpath = ''
|
||||
breakadd func 4 F
|
||||
try
|
||||
let caught_intr = 0
|
||||
let caught_abc = 0
|
||||
debuggreedy
|
||||
call feedkeys(":call F()\<CR>quit\<CR>", "xt")
|
||||
call F()
|
||||
catch /abc/
|
||||
let caught_abc = 1
|
||||
catch /^Vim:Interrupt$/
|
||||
call assert_match('\.F, line 4', v:throwpoint)
|
||||
let caught_intr = 1
|
||||
endtry
|
||||
let funcname = expand("<SID>") .. "G"
|
||||
exe "breakadd func 1 " .. funcname
|
||||
debuggreedy
|
||||
redir => output
|
||||
call feedkeys(":call " .. funcname .. "()\<CR>c\<CR>", "xt")
|
||||
redir END
|
||||
0debuggreedy
|
||||
call assert_equal(1, caught_intr)
|
||||
call assert_equal(0, caught_abc)
|
||||
call assert_match('Breakpoint in "' .. funcname .. '" line 1', output)
|
||||
call assert_equal('a', g:Xpath)
|
||||
breakdel *
|
||||
delfunc F
|
||||
exe "delfunc " .. funcname
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
@@ -5879,27 +5879,39 @@ func Test_discard_exception_after_error_1()
|
||||
call RunInNewVim(test, verify)
|
||||
endfunc
|
||||
|
||||
" TODO: Need to interrupt the code before the endtry is invoked
|
||||
func Disable_Test_discard_exception_after_error_2()
|
||||
let test =<< trim [CODE]
|
||||
" interrupt the code before the endtry is invoked
|
||||
func Test_discard_exception_after_error_2()
|
||||
XpathINIT
|
||||
let lines =<< trim [CODE]
|
||||
try
|
||||
Xpath 'a'
|
||||
try
|
||||
Xpath 'b'
|
||||
throw "arrgh"
|
||||
call interrupt() " FIXME: throw is not interrupted here
|
||||
call assert_report('should not get here')
|
||||
endtry
|
||||
endtry " interrupt here
|
||||
call assert_report('should not get here')
|
||||
catch /arrgh/
|
||||
call assert_report('should not get here')
|
||||
endtry
|
||||
call assert_report('should not get here')
|
||||
[CODE]
|
||||
let verify =<< trim [CODE]
|
||||
call assert_equal('ab', g:Xpath)
|
||||
[CODE]
|
||||
call RunInNewVim(test, verify)
|
||||
call writefile(lines, 'Xscript')
|
||||
|
||||
breakadd file 7 Xscript
|
||||
try
|
||||
let caught_intr = 0
|
||||
debuggreedy
|
||||
call feedkeys(":source Xscript\<CR>quit\<CR>", "xt")
|
||||
catch /^Vim:Interrupt$/
|
||||
call assert_match('Xscript, line 7', v:throwpoint)
|
||||
let caught_intr = 1
|
||||
endtry
|
||||
0debuggreedy
|
||||
call assert_equal(1, caught_intr)
|
||||
call assert_equal('ab', g:Xpath)
|
||||
breakdel *
|
||||
call delete('Xscript')
|
||||
endfunc
|
||||
|
||||
"-------------------------------------------------------------------------------
|
||||
@@ -5969,16 +5981,16 @@ func Test_ignore_catch_after_error_2()
|
||||
call RunInNewVim(test, verify)
|
||||
endfunc
|
||||
|
||||
" TODO: Need to interrupt the code right before the catch is invoked
|
||||
func FIXME_Test_ignore_catch_after_intr_1()
|
||||
let test =<< trim [CODE]
|
||||
" interrupt right before a catch is invoked in a script
|
||||
func Test_ignore_catch_after_intr_1()
|
||||
XpathINIT
|
||||
let lines =<< trim [CODE]
|
||||
try
|
||||
try
|
||||
Xpath 'a'
|
||||
throw "arrgh"
|
||||
call assert_report('should not get here')
|
||||
catch /.*/ " TODO: Need to interrupt before this catch is
|
||||
call interrupt() " invoked
|
||||
catch /.*/ " interrupt here
|
||||
call assert_report('should not get here')
|
||||
catch /.*/
|
||||
call assert_report('should not get here')
|
||||
@@ -5989,41 +6001,59 @@ func FIXME_Test_ignore_catch_after_intr_1()
|
||||
endtry
|
||||
call assert_report('should not get here')
|
||||
[CODE]
|
||||
let verify =<< trim [CODE]
|
||||
call assert_equal('a', g:Xpath)
|
||||
[CODE]
|
||||
call RunInNewVim(test, verify)
|
||||
call writefile(lines, 'Xscript')
|
||||
|
||||
breakadd file 6 Xscript
|
||||
try
|
||||
let caught_intr = 0
|
||||
debuggreedy
|
||||
call feedkeys(":source Xscript\<CR>quit\<CR>", "xt")
|
||||
catch /^Vim:Interrupt$/
|
||||
call assert_match('Xscript, line 6', v:throwpoint)
|
||||
let caught_intr = 1
|
||||
endtry
|
||||
0debuggreedy
|
||||
call assert_equal(1, caught_intr)
|
||||
call assert_equal('a', g:Xpath)
|
||||
breakdel *
|
||||
call delete('Xscript')
|
||||
endfunc
|
||||
|
||||
" TODO: Need to interrupt the code right before the catch is invoked
|
||||
func FIXME_Test_ignore_catch_after_intr_2()
|
||||
let test =<< trim [CODE]
|
||||
func I()
|
||||
" interrupt right before a catch is invoked inside a function.
|
||||
func Test_ignore_catch_after_intr_2()
|
||||
XpathINIT
|
||||
func F()
|
||||
try
|
||||
try
|
||||
try
|
||||
Xpath 'a'
|
||||
throw "arrgh"
|
||||
call assert_report('should not get here')
|
||||
catch /.*/ " TODO: Need to interrupt before this catch is
|
||||
" invoked
|
||||
call interrupt()
|
||||
call assert_report('should not get here')
|
||||
catch /.*/
|
||||
call assert_report('should not get here')
|
||||
endtry
|
||||
Xpath 'a'
|
||||
throw "arrgh"
|
||||
call assert_report('should not get here')
|
||||
catch /arrgh/
|
||||
catch /.*/ " interrupt here
|
||||
call assert_report('should not get here')
|
||||
catch /.*/
|
||||
call assert_report('should not get here')
|
||||
endtry
|
||||
endfunc
|
||||
|
||||
call I()
|
||||
call assert_report('should not get here')
|
||||
catch /arrgh/
|
||||
call assert_report('should not get here')
|
||||
endtry
|
||||
call assert_report('should not get here')
|
||||
[CODE]
|
||||
let verify =<< trim [CODE]
|
||||
call assert_equal('a', g:Xpath)
|
||||
[CODE]
|
||||
call RunInNewVim(test, verify)
|
||||
endfunc
|
||||
|
||||
breakadd func 6 F
|
||||
try
|
||||
let caught_intr = 0
|
||||
debuggreedy
|
||||
call feedkeys(":call F()\<CR>quit\<CR>", "xt")
|
||||
catch /^Vim:Interrupt$/
|
||||
call assert_match('\.F, line 6', v:throwpoint)
|
||||
let caught_intr = 1
|
||||
endtry
|
||||
0debuggreedy
|
||||
call assert_equal(1, caught_intr)
|
||||
call assert_equal('a', g:Xpath)
|
||||
breakdel *
|
||||
delfunc F
|
||||
endfunc
|
||||
|
||||
"-------------------------------------------------------------------------------
|
||||
@@ -6060,16 +6090,17 @@ func Test_finally_after_error()
|
||||
call RunInNewVim(test, verify)
|
||||
endfunc
|
||||
|
||||
" TODO: Need to interrupt the code right before the finally is invoked
|
||||
func FIXME_Test_finally_after_intr()
|
||||
let test =<< trim [CODE]
|
||||
" interrupt the code right before the finally is invoked
|
||||
func Test_finally_after_intr()
|
||||
XpathINIT
|
||||
let lines =<< trim [CODE]
|
||||
try
|
||||
Xpath 'a'
|
||||
try
|
||||
Xpath 'b'
|
||||
throw "arrgh"
|
||||
call assert_report('should not get here')
|
||||
finally " TODO: Need to interrupt before the finally is invoked
|
||||
finally " interrupt here
|
||||
Xpath 'c'
|
||||
endtry
|
||||
call assert_report('should not get here')
|
||||
@@ -6078,10 +6109,22 @@ func FIXME_Test_finally_after_intr()
|
||||
endtry
|
||||
call assert_report('should not get here')
|
||||
[CODE]
|
||||
let verify =<< trim [CODE]
|
||||
call assert_equal('abc', g:Xpath)
|
||||
[CODE]
|
||||
call RunInNewVim(test, verify)
|
||||
call writefile(lines, 'Xscript')
|
||||
|
||||
breakadd file 7 Xscript
|
||||
try
|
||||
let caught_intr = 0
|
||||
debuggreedy
|
||||
call feedkeys(":source Xscript\<CR>quit\<CR>", "xt")
|
||||
catch /^Vim:Interrupt$/
|
||||
call assert_match('Xscript, line 7', v:throwpoint)
|
||||
let caught_intr = 1
|
||||
endtry
|
||||
0debuggreedy
|
||||
call assert_equal(1, caught_intr)
|
||||
call assert_equal('abc', g:Xpath)
|
||||
breakdel *
|
||||
call delete('Xscript')
|
||||
endfunc
|
||||
|
||||
"-------------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user