patch 9.0.1570: some tests are slow
Problem: Some tests are slow.
Solution: Make a few test cases faster.
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index 9bb21bc..79740b5 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -791,10 +791,10 @@
endfunc
func Test_expand_star_star()
- call mkdir('a/b', 'pR')
- call writefile(['asdfasdf'], 'a/b/fileXname')
- call feedkeys(":find **/fileXname\<Tab>\<CR>", 'xt')
- call assert_equal('find a/b/fileXname', @:)
+ call mkdir('a/b/c', 'pR')
+ call writefile(['asdfasdf'], 'a/b/c/fileXname')
+ call feedkeys(":find a/**/fileXname\<Tab>\<CR>", 'xt')
+ call assert_equal('find a/b/c/fileXname', @:)
bwipe!
endfunc
diff --git a/src/testdir/test_codestyle.vim b/src/testdir/test_codestyle.vim
index 3553063..509e135 100644
--- a/src/testdir/test_codestyle.vim
+++ b/src/testdir/test_codestyle.vim
@@ -2,6 +2,7 @@
def Test_source_files()
for fname in glob('../*.[ch]', 0, 1)
+ bwipe!
exe 'edit ' .. fname
cursor(1, 1)
@@ -26,11 +27,11 @@
lnum = search(')\s*{', '', 0, 0, skip)
assert_equal(0, lnum, fname .. ': curly after closing paren')
- cursor(1, 1)
# Examples in comments use double quotes.
skip = "getline('.') =~ '\"'"
- # Avoid examples that contain: "} else
- lnum = search('[^"]}\s*else', '', 0, 0, skip)
+
+ cursor(1, 1)
+ lnum = search('}\s*else', '', 0, 0, skip)
assert_equal(0, lnum, fname .. ': curly before "else"')
cursor(1, 1)
diff --git a/src/testdir/test_debugger.vim b/src/testdir/test_debugger.vim
index 2b405d9..4261bb3 100644
--- a/src/testdir/test_debugger.vim
+++ b/src/testdir/test_debugger.vim
@@ -20,39 +20,39 @@
" "options" argument can contain:
" 'msec' - time to wait for a match
" 'match' - "pattern" to use "lines" as pattern instead of text
-func CheckDbgOutput(buf, lines, options = {})
- " Verify the expected output
- let lnum = 20 - len(a:lines)
- let msec = get(a:options, 'msec', 1000)
- for l in a:lines
- if get(a:options, 'match', 'equal') ==# 'pattern'
- call WaitForAssert({-> assert_match(l, term_getline(a:buf, lnum))}, msec)
+def s:CheckDbgOutput(buf: number, lines: list<string>, options = {})
+ # Verify the expected output
+ var lnum = 20 - len(lines)
+ var msec = get(options, 'msec', 1000)
+ for l in lines
+ if get(options, 'match', 'equal') ==# 'pattern'
+ g:WaitForAssert(() => assert_match(l, term_getline(buf, lnum)), msec)
else
- call WaitForAssert({-> assert_equal(l, term_getline(a:buf, lnum))}, msec)
+ g:WaitForAssert(() => assert_equal(l, term_getline(buf, lnum)), msec)
endif
- let lnum += 1
+ lnum += 1
endfor
-endfunc
+enddef
" Run a Vim debugger command
" If the expected output argument is supplied, then check for it.
-func RunDbgCmd(buf, cmd, ...)
- call term_sendkeys(a:buf, a:cmd . "\r")
- call TermWait(a:buf)
+def s:RunDbgCmd(buf: number, cmd: string, ...extra: list<any>)
+ term_sendkeys(buf, cmd .. "\r")
+ g:TermWait(buf)
- if a:0 != 0
- let options = #{match: 'equal'}
- if a:0 > 1
- call extend(options, a:2)
+ if len(extra) > 0
+ var options = {match: 'equal'}
+ if len(extra) > 1
+ extend(options, extra[1])
endif
- call CheckDbgOutput(a:buf, a:1, options)
+ s:CheckDbgOutput(buf, extra[0], options)
endif
-endfunc
+enddef
" Debugger tests
-func Test_Debugger()
- " Create a Vim script with some functions
- let lines =<< trim END
+def Test_Debugger()
+ # Create a Vim script with some functions
+ var lines =<< trim END
func Foo()
let var1 = 1
let var2 = Bar(var1) + 9
@@ -81,257 +81,257 @@
endfor
enddef
END
- call writefile(lines, 'XtestDebug.vim', 'D')
+ writefile(lines, 'XtestDebug.vim', 'D')
- " Start Vim in a terminal
- let buf = RunVimInTerminal('-S XtestDebug.vim', {})
+ # Start Vim in a terminal
+ var buf = g:RunVimInTerminal('-S XtestDebug.vim', {})
- " Start the Vim debugger
- call RunDbgCmd(buf, ':debug echo Foo()', ['cmd: echo Foo()'])
+ # Start the Vim debugger
+ s:RunDbgCmd(buf, ':debug echo Foo()', ['cmd: echo Foo()'])
- " Create a few stack frames by stepping through functions
- call RunDbgCmd(buf, 'step', ['line 1: let var1 = 1'])
- call RunDbgCmd(buf, 'step', ['line 2: let var2 = Bar(var1) + 9'])
- call RunDbgCmd(buf, 'step', ['line 1: let var1 = 2 + a:var'])
- call RunDbgCmd(buf, 'step', ['line 2: let var2 = Bazz(var1) + 4'])
- call RunDbgCmd(buf, 'step', ['line 1: try'])
- call RunDbgCmd(buf, 'step', ['line 2: let var1 = 3 + a:var'])
- call RunDbgCmd(buf, 'step', ['line 3: let var3 = "another var"'])
+ # Create a few stack frames by stepping through functions
+ s:RunDbgCmd(buf, 'step', ['line 1: let var1 = 1'])
+ s:RunDbgCmd(buf, 'step', ['line 2: let var2 = Bar(var1) + 9'])
+ s:RunDbgCmd(buf, 'step', ['line 1: let var1 = 2 + a:var'])
+ s:RunDbgCmd(buf, 'step', ['line 2: let var2 = Bazz(var1) + 4'])
+ s:RunDbgCmd(buf, 'step', ['line 1: try'])
+ s:RunDbgCmd(buf, 'step', ['line 2: let var1 = 3 + a:var'])
+ s:RunDbgCmd(buf, 'step', ['line 3: let var3 = "another var"'])
- " check backtrace
- call RunDbgCmd(buf, 'backtrace', [
- \ ' 2 function Foo[2]',
- \ ' 1 Bar[2]',
- \ '->0 Bazz',
- \ 'line 3: let var3 = "another var"'])
+ # check backtrace
+ s:RunDbgCmd(buf, 'backtrace', [
+ ' 2 function Foo[2]',
+ ' 1 Bar[2]',
+ '->0 Bazz',
+ 'line 3: let var3 = "another var"'])
- " Check variables in different stack frames
- call RunDbgCmd(buf, 'echo var1', ['6'])
+ # Check variables in different stack frames
+ s:RunDbgCmd(buf, 'echo var1', ['6'])
- call RunDbgCmd(buf, 'up')
- call RunDbgCmd(buf, 'back', [
- \ ' 2 function Foo[2]',
- \ '->1 Bar[2]',
- \ ' 0 Bazz',
- \ 'line 3: let var3 = "another var"'])
- call RunDbgCmd(buf, 'echo var1', ['3'])
+ s:RunDbgCmd(buf, 'up')
+ s:RunDbgCmd(buf, 'back', [
+ ' 2 function Foo[2]',
+ '->1 Bar[2]',
+ ' 0 Bazz',
+ 'line 3: let var3 = "another var"'])
+ s:RunDbgCmd(buf, 'echo var1', ['3'])
- call RunDbgCmd(buf, 'u')
- call RunDbgCmd(buf, 'bt', [
- \ '->2 function Foo[2]',
- \ ' 1 Bar[2]',
- \ ' 0 Bazz',
- \ 'line 3: let var3 = "another var"'])
- call RunDbgCmd(buf, 'echo var1', ['1'])
+ s:RunDbgCmd(buf, 'u')
+ s:RunDbgCmd(buf, 'bt', [
+ '->2 function Foo[2]',
+ ' 1 Bar[2]',
+ ' 0 Bazz',
+ 'line 3: let var3 = "another var"'])
+ s:RunDbgCmd(buf, 'echo var1', ['1'])
- " Undefined variables
- call RunDbgCmd(buf, 'step')
- call RunDbgCmd(buf, 'frame 2')
- call RunDbgCmd(buf, 'echo var3', [
- \ 'Error detected while processing function Foo[2]..Bar[2]..Bazz:',
- \ 'line 4:',
- \ 'E121: Undefined variable: var3'])
+ # Undefined variables
+ s:RunDbgCmd(buf, 'step')
+ s:RunDbgCmd(buf, 'frame 2')
+ s:RunDbgCmd(buf, 'echo var3', [
+ 'Error detected while processing function Foo[2]..Bar[2]..Bazz:',
+ 'line 4:',
+ 'E121: Undefined variable: var3'])
- " var3 is defined in this level with some other value
- call RunDbgCmd(buf, 'fr 0')
- call RunDbgCmd(buf, 'echo var3', ['another var'])
+ # var3 is defined in this level with some other value
+ s:RunDbgCmd(buf, 'fr 0')
+ s:RunDbgCmd(buf, 'echo var3', ['another var'])
- call RunDbgCmd(buf, 'step')
- call RunDbgCmd(buf, '')
- call RunDbgCmd(buf, '')
- call RunDbgCmd(buf, '')
- call RunDbgCmd(buf, '')
- call RunDbgCmd(buf, 'step', [
- \ 'function Foo[2]..Bar',
- \ 'line 3: End of function'])
- call RunDbgCmd(buf, 'up')
+ s:RunDbgCmd(buf, 'step')
+ s:RunDbgCmd(buf, '')
+ s:RunDbgCmd(buf, '')
+ s:RunDbgCmd(buf, '')
+ s:RunDbgCmd(buf, '')
+ s:RunDbgCmd(buf, 'step', [
+ 'function Foo[2]..Bar',
+ 'line 3: End of function'])
+ s:RunDbgCmd(buf, 'up')
- " Undefined var2
- call RunDbgCmd(buf, 'echo var2', [
- \ 'Error detected while processing function Foo[2]..Bar:',
- \ 'line 3:',
- \ 'E121: Undefined variable: var2'])
+ # Undefined var2
+ s:RunDbgCmd(buf, 'echo var2', [
+ 'Error detected while processing function Foo[2]..Bar:',
+ 'line 3:',
+ 'E121: Undefined variable: var2'])
- " Var2 is defined with 10
- call RunDbgCmd(buf, 'down')
- call RunDbgCmd(buf, 'echo var2', ['10'])
+ # Var2 is defined with 10
+ s:RunDbgCmd(buf, 'down')
+ s:RunDbgCmd(buf, 'echo var2', ['10'])
- " Backtrace movements
- call RunDbgCmd(buf, 'b', [
- \ ' 1 function Foo[2]',
- \ '->0 Bar',
- \ 'line 3: End of function'])
+ # Backtrace movements
+ s:RunDbgCmd(buf, 'b', [
+ ' 1 function Foo[2]',
+ '->0 Bar',
+ 'line 3: End of function'])
- " next command cannot go down, we are on bottom
- call RunDbgCmd(buf, 'down', ['frame is zero'])
- call RunDbgCmd(buf, 'up')
+ # next command cannot go down, we are on bottom
+ s:RunDbgCmd(buf, 'down', ['frame is zero'])
+ s:RunDbgCmd(buf, 'up')
- " next command cannot go up, we are on top
- call RunDbgCmd(buf, 'up', ['frame at highest level: 1'])
- call RunDbgCmd(buf, 'where', [
- \ '->1 function Foo[2]',
- \ ' 0 Bar',
- \ 'line 3: End of function'])
+ # next command cannot go up, we are on top
+ s:RunDbgCmd(buf, 'up', ['frame at highest level: 1'])
+ s:RunDbgCmd(buf, 'where', [
+ '->1 function Foo[2]',
+ ' 0 Bar',
+ 'line 3: End of function'])
- " fil is not frame or finish, it is file
- call RunDbgCmd(buf, 'fil', ['"[No Name]" --No lines in buffer--'])
+ # fil is not frame or finish, it is file
+ s:RunDbgCmd(buf, 'fil', ['"[No Name]" --No lines in buffer--'])
- " relative backtrace movement
- call RunDbgCmd(buf, 'fr -1')
- call RunDbgCmd(buf, 'frame', [
- \ ' 1 function Foo[2]',
- \ '->0 Bar',
- \ 'line 3: End of function'])
+ # relative backtrace movement
+ s:RunDbgCmd(buf, 'fr -1')
+ s:RunDbgCmd(buf, 'frame', [
+ ' 1 function Foo[2]',
+ '->0 Bar',
+ 'line 3: End of function'])
- call RunDbgCmd(buf, 'fr +1')
- call RunDbgCmd(buf, 'fram', [
- \ '->1 function Foo[2]',
- \ ' 0 Bar',
- \ 'line 3: End of function'])
+ s:RunDbgCmd(buf, 'fr +1')
+ s:RunDbgCmd(buf, 'fram', [
+ '->1 function Foo[2]',
+ ' 0 Bar',
+ 'line 3: End of function'])
- " go beyond limits does not crash
- call RunDbgCmd(buf, 'fr 100', ['frame at highest level: 1'])
- call RunDbgCmd(buf, 'fra', [
- \ '->1 function Foo[2]',
- \ ' 0 Bar',
- \ 'line 3: End of function'])
+ # go beyond limits does not crash
+ s:RunDbgCmd(buf, 'fr 100', ['frame at highest level: 1'])
+ s:RunDbgCmd(buf, 'fra', [
+ '->1 function Foo[2]',
+ ' 0 Bar',
+ 'line 3: End of function'])
- call RunDbgCmd(buf, 'frame -40', ['frame is zero'])
- call RunDbgCmd(buf, 'fram', [
- \ ' 1 function Foo[2]',
- \ '->0 Bar',
- \ 'line 3: End of function'])
+ s:RunDbgCmd(buf, 'frame -40', ['frame is zero'])
+ s:RunDbgCmd(buf, 'fram', [
+ ' 1 function Foo[2]',
+ '->0 Bar',
+ 'line 3: End of function'])
- " final result 19
- call RunDbgCmd(buf, 'cont', ['19'])
+ # final result 19
+ s:RunDbgCmd(buf, 'cont', ['19'])
- " breakpoints tests
+ # breakpoints tests
- " Start a debug session, so that reading the last line from the terminal
- " works properly.
- call RunDbgCmd(buf, ':debug echo Foo()', ['cmd: echo Foo()'])
+ # Start a debug session, so that reading the last line from the terminal
+ # works properly.
+ s:RunDbgCmd(buf, ':debug echo Foo()', ['cmd: echo Foo()'])
- " No breakpoints
- call RunDbgCmd(buf, 'breakl', ['No breakpoints defined'])
+ # No breakpoints
+ s:RunDbgCmd(buf, 'breakl', ['No breakpoints defined'])
- " Place some breakpoints
- call RunDbgCmd(buf, 'breaka func Bar')
- call RunDbgCmd(buf, 'breaklis', [' 1 func Bar line 1'])
- call RunDbgCmd(buf, 'breakadd func 3 Bazz')
- call RunDbgCmd(buf, 'breaklist', [' 1 func Bar line 1',
- \ ' 2 func Bazz line 3'])
+ # Place some breakpoints
+ s:RunDbgCmd(buf, 'breaka func Bar')
+ s:RunDbgCmd(buf, 'breaklis', [' 1 func Bar line 1'])
+ s:RunDbgCmd(buf, 'breakadd func 3 Bazz')
+ s:RunDbgCmd(buf, 'breaklist', [' 1 func Bar line 1',
+ ' 2 func Bazz line 3'])
- " Check whether the breakpoints are hit
- call RunDbgCmd(buf, 'cont', [
- \ 'Breakpoint in "Bar" line 1',
- \ 'function Foo[2]..Bar',
- \ 'line 1: let var1 = 2 + a:var'])
- call RunDbgCmd(buf, 'cont', [
- \ 'Breakpoint in "Bazz" line 3',
- \ 'function Foo[2]..Bar[2]..Bazz',
- \ 'line 3: let var3 = "another var"'])
+ # Check whether the breakpoints are hit
+ s:RunDbgCmd(buf, 'cont', [
+ 'Breakpoint in "Bar" line 1',
+ 'function Foo[2]..Bar',
+ 'line 1: let var1 = 2 + a:var'])
+ s:RunDbgCmd(buf, 'cont', [
+ 'Breakpoint in "Bazz" line 3',
+ 'function Foo[2]..Bar[2]..Bazz',
+ 'line 3: let var3 = "another var"'])
- " Delete the breakpoints
- call RunDbgCmd(buf, 'breakd 1')
- call RunDbgCmd(buf, 'breakli', [' 2 func Bazz line 3'])
- call RunDbgCmd(buf, 'breakdel func 3 Bazz')
- call RunDbgCmd(buf, 'breakl', ['No breakpoints defined'])
+ # Delete the breakpoints
+ s:RunDbgCmd(buf, 'breakd 1')
+ s:RunDbgCmd(buf, 'breakli', [' 2 func Bazz line 3'])
+ s:RunDbgCmd(buf, 'breakdel func 3 Bazz')
+ s:RunDbgCmd(buf, 'breakl', ['No breakpoints defined'])
- call RunDbgCmd(buf, 'cont')
+ s:RunDbgCmd(buf, 'cont')
- " Make sure the breakpoints are removed
- call RunDbgCmd(buf, ':echo Foo()', ['19'])
+ # Make sure the breakpoints are removed
+ s:RunDbgCmd(buf, ':echo Foo()', ['19'])
- " Delete a non-existing breakpoint
- call RunDbgCmd(buf, ':breakdel 2', ['E161: Breakpoint not found: 2'])
+ # Delete a non-existing breakpoint
+ s:RunDbgCmd(buf, ':breakdel 2', ['E161: Breakpoint not found: 2'])
- " Expression breakpoint
- call RunDbgCmd(buf, ':breakadd func 2 Bazz')
- call RunDbgCmd(buf, ':echo Bazz(1)', [
- \ 'Entering Debug mode. Type "cont" to continue.',
- \ 'function Bazz',
- \ 'line 2: let var1 = 3 + a:var'])
- call RunDbgCmd(buf, 'step')
- call RunDbgCmd(buf, 'step')
- call RunDbgCmd(buf, 'breaka expr var3')
- call RunDbgCmd(buf, 'breakl', [' 3 func Bazz line 2',
+ # Expression breakpoint
+ s:RunDbgCmd(buf, ':breakadd func 2 Bazz')
+ s:RunDbgCmd(buf, ':echo Bazz(1)', [
+ 'Entering Debug mode. Type "cont" to continue.',
+ 'function Bazz',
+ 'line 2: let var1 = 3 + a:var'])
+ s:RunDbgCmd(buf, 'step')
+ s:RunDbgCmd(buf, 'step')
+ s:RunDbgCmd(buf, 'breaka expr var3')
+ s:RunDbgCmd(buf, 'breakl', [' 3 func Bazz line 2',
\ ' 4 expr var3'])
- call RunDbgCmd(buf, 'cont', ['Breakpoint in "Bazz" line 5',
- \ 'Oldval = "''another var''"',
- \ 'Newval = "''value2''"',
- \ 'function Bazz',
- \ 'line 5: catch'])
+ s:RunDbgCmd(buf, 'cont', ['Breakpoint in "Bazz" line 5',
+ 'Oldval = "''another var''"',
+ 'Newval = "''value2''"',
+ 'function Bazz',
+ 'line 5: catch'])
- call RunDbgCmd(buf, 'breakdel *')
- call RunDbgCmd(buf, 'breakl', ['No breakpoints defined'])
+ s:RunDbgCmd(buf, 'breakdel *')
+ s:RunDbgCmd(buf, 'breakl', ['No breakpoints defined'])
- " Check for error cases
- call RunDbgCmd(buf, 'breakadd abcd', [
- \ 'Error detected while processing function Bazz:',
- \ 'line 5:',
- \ 'E475: Invalid argument: abcd'])
- call RunDbgCmd(buf, 'breakadd func', ['E475: Invalid argument: func'])
- call RunDbgCmd(buf, 'breakadd func 2', ['E475: Invalid argument: func 2'])
- call RunDbgCmd(buf, 'breaka func a()', ['E475: Invalid argument: func a()'])
- call RunDbgCmd(buf, 'breakd abcd', ['E475: Invalid argument: abcd'])
- call RunDbgCmd(buf, 'breakd func', ['E475: Invalid argument: func'])
- call RunDbgCmd(buf, 'breakd func a()', ['E475: Invalid argument: func a()'])
- call RunDbgCmd(buf, 'breakd func a', ['E161: Breakpoint not found: func a'])
- call RunDbgCmd(buf, 'breakd expr', ['E475: Invalid argument: expr'])
- call RunDbgCmd(buf, 'breakd expr x', ['E161: Breakpoint not found: expr x'])
+ # Check for error cases
+ s:RunDbgCmd(buf, 'breakadd abcd', [
+ 'Error detected while processing function Bazz:',
+ 'line 5:',
+ 'E475: Invalid argument: abcd'])
+ s:RunDbgCmd(buf, 'breakadd func', ['E475: Invalid argument: func'])
+ s:RunDbgCmd(buf, 'breakadd func 2', ['E475: Invalid argument: func 2'])
+ s:RunDbgCmd(buf, 'breaka func a()', ['E475: Invalid argument: func a()'])
+ s:RunDbgCmd(buf, 'breakd abcd', ['E475: Invalid argument: abcd'])
+ s:RunDbgCmd(buf, 'breakd func', ['E475: Invalid argument: func'])
+ s:RunDbgCmd(buf, 'breakd func a()', ['E475: Invalid argument: func a()'])
+ s:RunDbgCmd(buf, 'breakd func a', ['E161: Breakpoint not found: func a'])
+ s:RunDbgCmd(buf, 'breakd expr', ['E475: Invalid argument: expr'])
+ s:RunDbgCmd(buf, 'breakd expr x', ['E161: Breakpoint not found: expr x'])
- " finish the current function
- call RunDbgCmd(buf, 'finish', [
- \ 'function Bazz',
- \ 'line 8: End of function'])
- call RunDbgCmd(buf, 'cont')
+ # finish the current function
+ s:RunDbgCmd(buf, 'finish', [
+ 'function Bazz',
+ 'line 8: End of function'])
+ s:RunDbgCmd(buf, 'cont')
- " Test for :next
- call RunDbgCmd(buf, ':debug echo Bar(1)')
- call RunDbgCmd(buf, 'step')
- call RunDbgCmd(buf, 'next')
- call RunDbgCmd(buf, '', [
- \ 'function Bar',
- \ 'line 3: return var2'])
- call RunDbgCmd(buf, 'c')
+ # Test for :next
+ s:RunDbgCmd(buf, ':debug echo Bar(1)')
+ s:RunDbgCmd(buf, 'step')
+ s:RunDbgCmd(buf, 'next')
+ s:RunDbgCmd(buf, '', [
+ 'function Bar',
+ 'line 3: return var2'])
+ s:RunDbgCmd(buf, 'c')
- " Test for :interrupt
- call RunDbgCmd(buf, ':debug echo Bazz(1)')
- call RunDbgCmd(buf, 'step')
- call RunDbgCmd(buf, 'step')
- call RunDbgCmd(buf, 'interrupt', [
- \ 'Exception thrown: Vim:Interrupt',
- \ 'function Bazz',
- \ 'line 5: catch'])
- call RunDbgCmd(buf, 'c')
+ # Test for :interrupt
+ s:RunDbgCmd(buf, ':debug echo Bazz(1)')
+ s:RunDbgCmd(buf, 'step')
+ s:RunDbgCmd(buf, 'step')
+ s:RunDbgCmd(buf, 'interrupt', [
+ 'Exception thrown: Vim:Interrupt',
+ 'function Bazz',
+ 'line 5: catch'])
+ s:RunDbgCmd(buf, 'c')
- " Test showing local variable in :def function
- call RunDbgCmd(buf, ':breakadd func 2 Vim9Func')
- call RunDbgCmd(buf, ':call Vim9Func()', ['line 2: for _ in [1, 2]'])
- call RunDbgCmd(buf, 'next', ['line 2: for _ in [1, 2]'])
- call RunDbgCmd(buf, 'echo cmd', ['confirm'])
- call RunDbgCmd(buf, 'breakdel *')
- call RunDbgCmd(buf, 'cont')
+ # Test showing local variable in :def function
+ s:RunDbgCmd(buf, ':breakadd func 2 Vim9Func')
+ s:RunDbgCmd(buf, ':call Vim9Func()', ['line 2: for _ in [1, 2]'])
+ s:RunDbgCmd(buf, 'next', ['line 2: for _ in [1, 2]'])
+ s:RunDbgCmd(buf, 'echo cmd', ['confirm'])
+ s:RunDbgCmd(buf, 'breakdel *')
+ s:RunDbgCmd(buf, 'cont')
- " Test for :quit
- call RunDbgCmd(buf, ':debug echo Foo()')
- call RunDbgCmd(buf, 'breakdel *')
- call RunDbgCmd(buf, 'breakadd func 3 Foo')
- call RunDbgCmd(buf, 'breakadd func 3 Bazz')
- call RunDbgCmd(buf, 'cont', [
- \ 'Breakpoint in "Bazz" line 3',
- \ 'function Foo[2]..Bar[2]..Bazz',
- \ 'line 3: let var3 = "another var"'])
- call RunDbgCmd(buf, 'quit', [
- \ 'Breakpoint in "Foo" line 3',
- \ 'function Foo',
- \ 'line 3: return var2'])
- call RunDbgCmd(buf, 'breakdel *')
- call RunDbgCmd(buf, 'quit')
- call RunDbgCmd(buf, 'enew! | only!')
+ # Test for :quit
+ s:RunDbgCmd(buf, ':debug echo Foo()')
+ s:RunDbgCmd(buf, 'breakdel *')
+ s:RunDbgCmd(buf, 'breakadd func 3 Foo')
+ s:RunDbgCmd(buf, 'breakadd func 3 Bazz')
+ s:RunDbgCmd(buf, 'cont', [
+ 'Breakpoint in "Bazz" line 3',
+ 'function Foo[2]..Bar[2]..Bazz',
+ 'line 3: let var3 = "another var"'])
+ s:RunDbgCmd(buf, 'quit', [
+ 'Breakpoint in "Foo" line 3',
+ 'function Foo',
+ 'line 3: return var2'])
+ s:RunDbgCmd(buf, 'breakdel *')
+ s:RunDbgCmd(buf, 'quit')
+ s:RunDbgCmd(buf, 'enew! | only!')
- call StopVimInTerminal(buf)
-endfunc
+ g:StopVimInTerminal(buf)
+enddef
func Test_Debugger_breakadd()
" Tests for :breakadd file and :breakadd here
@@ -347,11 +347,11 @@
" Start Vim in a terminal
let buf = RunVimInTerminal('XdebugBreakadd.vim', {})
- call RunDbgCmd(buf, ':breakadd file 2 XdebugBreakadd.vim')
- call RunDbgCmd(buf, ':4 | breakadd here')
- call RunDbgCmd(buf, ':source XdebugBreakadd.vim', ['line 2: let var2 = 20'])
- call RunDbgCmd(buf, 'cont', ['line 4: let var4 = 40'])
- call RunDbgCmd(buf, 'cont')
+ call s:RunDbgCmd(buf, ':breakadd file 2 XdebugBreakadd.vim')
+ call s:RunDbgCmd(buf, ':4 | breakadd here')
+ call s:RunDbgCmd(buf, ':source XdebugBreakadd.vim', ['line 2: let var2 = 20'])
+ call s:RunDbgCmd(buf, 'cont', ['line 4: let var4 = 40'])
+ call s:RunDbgCmd(buf, 'cont')
call StopVimInTerminal(buf)
@@ -372,24 +372,24 @@
" Start Vim in a terminal
let buf = RunVimInTerminal('XdebugBreakExpr.vim', {})
- call RunDbgCmd(buf, ':let g:Xtest_var = 10')
- call RunDbgCmd(buf, ':breakadd expr g:Xtest_var')
- call RunDbgCmd(buf, ':source %')
+ call s:RunDbgCmd(buf, ':let g:Xtest_var = 10')
+ call s:RunDbgCmd(buf, ':breakadd expr g:Xtest_var')
+ call s:RunDbgCmd(buf, ':source %')
let expected =<< trim eval END
Oldval = "10"
Newval = "11"
{fnamemodify('XdebugBreakExpr.vim', ':p')}
line 1: let g:Xtest_var += 1
END
- call RunDbgCmd(buf, ':source %', expected)
- call RunDbgCmd(buf, 'cont')
+ call s:RunDbgCmd(buf, ':source %', expected)
+ call s:RunDbgCmd(buf, 'cont')
let expected =<< trim eval END
Oldval = "11"
Newval = "12"
{fnamemodify('XdebugBreakExpr.vim', ':p')}
line 1: let g:Xtest_var += 1
END
- call RunDbgCmd(buf, ':source %', expected)
+ call s:RunDbgCmd(buf, ':source %', expected)
call StopVimInTerminal(buf)
endfunc
@@ -411,9 +411,9 @@
call g:TermWait(buf, g:RunningWithValgrind() ? 1000 : 50)
# Despite the failure the functions are defined
- g:RunDbgCmd(buf, ':function g:EarlyFunc',
+ s:RunDbgCmd(buf, ':function g:EarlyFunc',
['function EarlyFunc()', 'endfunction'], {match: 'pattern'})
- g:RunDbgCmd(buf, ':function g:LaterFunc',
+ s:RunDbgCmd(buf, ':function g:LaterFunc',
['function LaterFunc()', 'endfunction'], {match: 'pattern'})
call g:StopVimInTerminal(buf)
@@ -435,7 +435,7 @@
var buf = g:RunVimInTerminal('-S XdebugBreakRet.vim', {wait_for_ruler: 0})
call g:TermWait(buf, g:RunningWithValgrind() ? 1000 : 50)
- g:RunDbgCmd(buf, ':call GetNum()',
+ s:RunDbgCmd(buf, ':call GetNum()',
['line 1: return 1 + 2 + 3'], {match: 'pattern'})
call g:StopVimInTerminal(buf)
@@ -474,19 +474,19 @@
let buf = RunVimInTerminal('-S Xtest1.vim', {})
- call RunDbgCmd(buf,
+ call s:RunDbgCmd(buf,
\ ':debug call GlobalFunction()',
\ ['cmd: call GlobalFunction()'])
- call RunDbgCmd(buf, 'step', ['line 1: call CallAFunction()'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: call CallAFunction()'])
- call RunDbgCmd(buf, 'backtrace', ['>backtrace',
+ call s:RunDbgCmd(buf, 'backtrace', ['>backtrace',
\ '->0 function GlobalFunction',
\ 'line 1: call CallAFunction()'])
- call RunDbgCmd(buf, 'step', ['line 1: call SourceAnotherFile()'])
- call RunDbgCmd(buf, 'step', ['line 1: source Xtest2.vim'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: call SourceAnotherFile()'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: source Xtest2.vim'])
- call RunDbgCmd(buf, 'backtrace', ['>backtrace',
+ call s:RunDbgCmd(buf, 'backtrace', ['>backtrace',
\ ' 2 function GlobalFunction[1]',
\ ' 1 CallAFunction[1]',
\ '->0 SourceAnotherFile',
@@ -494,8 +494,8 @@
" Step into the 'source' command. Note that we print the full trace all the
" way though the source command.
- call RunDbgCmd(buf, 'step', ['line 1: func DoAThing()'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['line 1: func DoAThing()'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 3 function GlobalFunction[1]',
\ ' 2 CallAFunction[1]',
@@ -503,8 +503,8 @@
\ '->0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()'])
- call RunDbgCmd( buf, 'up' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'up' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ ' 3 function GlobalFunction[1]',
\ ' 2 CallAFunction[1]',
@@ -512,8 +512,8 @@
\ ' 0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'up' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'up' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ ' 3 function GlobalFunction[1]',
\ '->2 CallAFunction[1]',
@@ -521,8 +521,8 @@
\ ' 0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'up' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'up' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ '->3 function GlobalFunction[1]',
\ ' 2 CallAFunction[1]',
@@ -530,8 +530,8 @@
\ ' 0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'up', [ 'frame at highest level: 3' ] )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'up', [ 'frame at highest level: 3' ] )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ '->3 function GlobalFunction[1]',
\ ' 2 CallAFunction[1]',
@@ -539,8 +539,8 @@
\ ' 0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'down' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'down' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ ' 3 function GlobalFunction[1]',
\ '->2 CallAFunction[1]',
@@ -548,8 +548,8 @@
\ ' 0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'down' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'down' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ ' 3 function GlobalFunction[1]',
\ ' 2 CallAFunction[1]',
@@ -557,8 +557,8 @@
\ ' 0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'down' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'down' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ ' 3 function GlobalFunction[1]',
\ ' 2 CallAFunction[1]',
@@ -566,12 +566,12 @@
\ '->0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'down', [ 'frame is zero' ] )
+ call s:RunDbgCmd( buf, 'down', [ 'frame is zero' ] )
" step until we have another meaningful trace
- call RunDbgCmd(buf, 'step', ['line 5: func File2Function()'])
- call RunDbgCmd(buf, 'step', ['line 9: call File2Function()'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['line 5: func File2Function()'])
+ call s:RunDbgCmd(buf, 'step', ['line 9: call File2Function()'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 3 function GlobalFunction[1]',
\ ' 2 CallAFunction[1]',
@@ -579,9 +579,9 @@
\ '->0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 9: call File2Function()'])
- call RunDbgCmd(buf, 'step', ['line 1: call DoAThing()'])
- call RunDbgCmd(buf, 'step', ['line 1: echo "DoAThing"'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['line 1: call DoAThing()'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: echo "DoAThing"'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 5 function GlobalFunction[1]',
\ ' 4 CallAFunction[1]',
@@ -592,19 +592,19 @@
\ 'line 1: echo "DoAThing"'])
" Now, step (back to Xfile1.vim), and call the function _in_ Xfile2.vim
- call RunDbgCmd(buf, 'step', ['line 1: End of function'])
- call RunDbgCmd(buf, 'step', ['line 1: End of function'])
- call RunDbgCmd(buf, 'step', ['line 10: End of sourced file'])
- call RunDbgCmd(buf, 'step', ['line 1: End of function'])
- call RunDbgCmd(buf, 'step', ['line 2: call File2Function()'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['line 1: End of function'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: End of function'])
+ call s:RunDbgCmd(buf, 'step', ['line 10: End of sourced file'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: End of function'])
+ call s:RunDbgCmd(buf, 'step', ['line 2: call File2Function()'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 1 function GlobalFunction[1]',
\ '->0 CallAFunction',
\ 'line 2: call File2Function()'])
- call RunDbgCmd(buf, 'step', ['line 1: call DoAThing()'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['line 1: call DoAThing()'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 2 function GlobalFunction[1]',
\ ' 1 CallAFunction[2]',
@@ -649,29 +649,29 @@
let buf = RunVimInTerminal('-S Xtest1.vim', {})
- call RunDbgCmd(buf,
+ call s:RunDbgCmd(buf,
\ ':debug doautocmd User TestGlobalFunction',
\ ['cmd: doautocmd User TestGlobalFunction'])
- call RunDbgCmd(buf, 'step', ['cmd: call GlobalFunction() | echo "Done"'])
+ call s:RunDbgCmd(buf, 'step', ['cmd: call GlobalFunction() | echo "Done"'])
" At this point the only thing in the stack is the autocommand
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ '->0 User Autocommands for "TestGlobalFunction"',
\ 'cmd: call GlobalFunction() | echo "Done"'])
" And now we're back into the call stack
- call RunDbgCmd(buf, 'step', ['line 1: call CallAFunction()'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['line 1: call CallAFunction()'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 1 User Autocommands for "TestGlobalFunction"',
\ '->0 function GlobalFunction',
\ 'line 1: call CallAFunction()'])
- call RunDbgCmd(buf, 'step', ['line 1: call SourceAnotherFile()'])
- call RunDbgCmd(buf, 'step', ['line 1: source Xtest2.vim'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: call SourceAnotherFile()'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: source Xtest2.vim'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 3 User Autocommands for "TestGlobalFunction"',
\ ' 2 function GlobalFunction[1]',
@@ -681,8 +681,8 @@
" Step into the 'source' command. Note that we print the full trace all the
" way though the source command.
- call RunDbgCmd(buf, 'step', ['line 1: func DoAThing()'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['line 1: func DoAThing()'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 4 User Autocommands for "TestGlobalFunction"',
\ ' 3 function GlobalFunction[1]',
@@ -691,8 +691,8 @@
\ '->0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()'])
- call RunDbgCmd( buf, 'up' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'up' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ ' 4 User Autocommands for "TestGlobalFunction"',
\ ' 3 function GlobalFunction[1]',
@@ -701,8 +701,8 @@
\ ' 0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'up' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'up' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ ' 4 User Autocommands for "TestGlobalFunction"',
\ ' 3 function GlobalFunction[1]',
@@ -711,8 +711,8 @@
\ ' 0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'up' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'up' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ ' 4 User Autocommands for "TestGlobalFunction"',
\ '->3 function GlobalFunction[1]',
@@ -721,8 +721,8 @@
\ ' 0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'up' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'up' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ '->4 User Autocommands for "TestGlobalFunction"',
\ ' 3 function GlobalFunction[1]',
@@ -731,8 +731,8 @@
\ ' 0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'up', [ 'frame at highest level: 4' ] )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'up', [ 'frame at highest level: 4' ] )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ '->4 User Autocommands for "TestGlobalFunction"',
\ ' 3 function GlobalFunction[1]',
@@ -741,8 +741,8 @@
\ ' 0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'down' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'down' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ ' 4 User Autocommands for "TestGlobalFunction"',
\ '->3 function GlobalFunction[1]',
@@ -752,8 +752,8 @@
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'down' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'down' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ ' 4 User Autocommands for "TestGlobalFunction"',
\ ' 3 function GlobalFunction[1]',
@@ -762,8 +762,8 @@
\ ' 0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'down' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'down' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ ' 4 User Autocommands for "TestGlobalFunction"',
\ ' 3 function GlobalFunction[1]',
@@ -772,8 +772,8 @@
\ ' 0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'down' )
- call RunDbgCmd( buf, 'backtrace', [
+ call s:RunDbgCmd( buf, 'down' )
+ call s:RunDbgCmd( buf, 'backtrace', [
\ '>backtrace',
\ ' 4 User Autocommands for "TestGlobalFunction"',
\ ' 3 function GlobalFunction[1]',
@@ -782,12 +782,12 @@
\ '->0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 1: func DoAThing()' ] )
- call RunDbgCmd( buf, 'down', [ 'frame is zero' ] )
+ call s:RunDbgCmd( buf, 'down', [ 'frame is zero' ] )
" step until we have another meaningful trace
- call RunDbgCmd(buf, 'step', ['line 5: func File2Function()'])
- call RunDbgCmd(buf, 'step', ['line 9: call File2Function()'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['line 5: func File2Function()'])
+ call s:RunDbgCmd(buf, 'step', ['line 9: call File2Function()'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 4 User Autocommands for "TestGlobalFunction"',
\ ' 3 function GlobalFunction[1]',
@@ -796,9 +796,9 @@
\ '->0 script ' .. getcwd() .. '/Xtest2.vim',
\ 'line 9: call File2Function()'])
- call RunDbgCmd(buf, 'step', ['line 1: call DoAThing()'])
- call RunDbgCmd(buf, 'step', ['line 1: echo "DoAThing"'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['line 1: call DoAThing()'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: echo "DoAThing"'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 6 User Autocommands for "TestGlobalFunction"',
\ ' 5 function GlobalFunction[1]',
@@ -810,20 +810,20 @@
\ 'line 1: echo "DoAThing"'])
" Now, step (back to Xfile1.vim), and call the function _in_ Xfile2.vim
- call RunDbgCmd(buf, 'step', ['line 1: End of function'])
- call RunDbgCmd(buf, 'step', ['line 1: End of function'])
- call RunDbgCmd(buf, 'step', ['line 10: End of sourced file'])
- call RunDbgCmd(buf, 'step', ['line 1: End of function'])
- call RunDbgCmd(buf, 'step', ['line 2: call File2Function()'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['line 1: End of function'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: End of function'])
+ call s:RunDbgCmd(buf, 'step', ['line 10: End of sourced file'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: End of function'])
+ call s:RunDbgCmd(buf, 'step', ['line 2: call File2Function()'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 2 User Autocommands for "TestGlobalFunction"',
\ ' 1 function GlobalFunction[1]',
\ '->0 CallAFunction',
\ 'line 2: call File2Function()'])
- call RunDbgCmd(buf, 'step', ['line 1: call DoAThing()'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['line 1: call DoAThing()'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 3 User Autocommands for "TestGlobalFunction"',
\ ' 2 function GlobalFunction[1]',
@@ -834,8 +834,8 @@
" Now unwind so that we get back to the original autocommand (and the second
" cmd echo "Done")
- call RunDbgCmd(buf, 'finish', ['line 1: End of function'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'finish', ['line 1: End of function'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 3 User Autocommands for "TestGlobalFunction"',
\ ' 2 function GlobalFunction[1]',
@@ -843,23 +843,23 @@
\ '->0 File2Function',
\ 'line 1: End of function'])
- call RunDbgCmd(buf, 'finish', ['line 2: End of function'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'finish', ['line 2: End of function'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 2 User Autocommands for "TestGlobalFunction"',
\ ' 1 function GlobalFunction[1]',
\ '->0 CallAFunction',
\ 'line 2: End of function'])
- call RunDbgCmd(buf, 'finish', ['line 1: End of function'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'finish', ['line 1: End of function'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 1 User Autocommands for "TestGlobalFunction"',
\ '->0 function GlobalFunction',
\ 'line 1: End of function'])
- call RunDbgCmd(buf, 'step', ['cmd: echo "Done"'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['cmd: echo "Done"'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ '->0 User Autocommands for "TestGlobalFunction"',
\ 'cmd: echo "Done"'])
@@ -906,18 +906,18 @@
" Need to wait for the vim-in-terminal to be ready.
" With valgrind this can take quite long.
- call CheckDbgOutput(buf, ['command line',
+ call s:CheckDbgOutput(buf, ['command line',
\ 'cmd: call GlobalFunction()'], #{msec: 5000})
" At this point the only thing in the stack is the cmdline
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ '->0 command line',
\ 'cmd: call GlobalFunction()'])
" And now we're back into the call stack
- call RunDbgCmd(buf, 'step', ['line 1: call CallAFunction()'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['line 1: call CallAFunction()'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '>backtrace',
\ ' 1 command line',
\ '->0 function GlobalFunction',
@@ -970,32 +970,32 @@
let buf = RunVimInTerminal('-S Xtest1.vim', {})
- call RunDbgCmd(buf,
+ call s:RunDbgCmd(buf,
\ ':debug call GlobalFunction()',
\ ['cmd: call GlobalFunction()'])
- call RunDbgCmd(buf, 'step', ['line 1: var some = "some var"'])
- call RunDbgCmd(buf, 'step', ['line 2: CallAFunction()'])
- call RunDbgCmd(buf, 'echo some', ['some var'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: var some = "some var"'])
+ call s:RunDbgCmd(buf, 'step', ['line 2: CallAFunction()'])
+ call s:RunDbgCmd(buf, 'echo some', ['some var'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '\V>backtrace',
\ '\V->0 function GlobalFunction',
\ '\Vline 2: CallAFunction()',
\ ],
\ #{match: 'pattern'})
- call RunDbgCmd(buf, 'step', ['line 1: SourceAnotherFile()'])
- call RunDbgCmd(buf, 'step', ['line 1: source Xtest2.vim'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: SourceAnotherFile()'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: source Xtest2.vim'])
" Repeated line, because we first are in the compiled function before the
" EXEC and then in do_cmdline() before the :source command.
- call RunDbgCmd(buf, 'step', ['line 1: source Xtest2.vim'])
- call RunDbgCmd(buf, 'step', ['line 1: vim9script'])
- call RunDbgCmd(buf, 'step', ['line 3: def DoAThing(): number'])
- call RunDbgCmd(buf, 'step', ['line 9: export def File2Function()'])
- call RunDbgCmd(buf, 'step', ['line 13: defcompile'])
- call RunDbgCmd(buf, 'step', ['line 14: File2Function()'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'step', ['line 1: source Xtest2.vim'])
+ call s:RunDbgCmd(buf, 'step', ['line 1: vim9script'])
+ call s:RunDbgCmd(buf, 'step', ['line 3: def DoAThing(): number'])
+ call s:RunDbgCmd(buf, 'step', ['line 9: export def File2Function()'])
+ call s:RunDbgCmd(buf, 'step', ['line 13: defcompile'])
+ call s:RunDbgCmd(buf, 'step', ['line 14: File2Function()'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '\V>backtrace',
\ '\V 3 function GlobalFunction[2]',
\ '\V 2 <SNR>\.\*_CallAFunction[1]',
@@ -1005,8 +1005,8 @@
\ #{match: 'pattern'})
" Don't step into compiled functions...
- call RunDbgCmd(buf, 'next', ['line 15: End of sourced file'])
- call RunDbgCmd(buf, 'backtrace', [
+ call s:RunDbgCmd(buf, 'next', ['line 15: End of sourced file'])
+ call s:RunDbgCmd(buf, 'backtrace', [
\ '\V>backtrace',
\ '\V 3 function GlobalFunction[2]',
\ '\V 2 <SNR>\.\*_CallAFunction[1]',
@@ -1032,8 +1032,8 @@
call writefile(file3, 'Xtest3.vim', 'D')
let buf = RunVimInTerminal('-S Xtest3.vim', {})
- call RunDbgCmd(buf, ':breakadd expr g:someVar')
- call RunDbgCmd(buf, ':call g:ChangeVar()', ['Oldval = "''foo''"', 'Newval = "''bar''"', 'function ChangeVar', 'line 2: echo "changed"'])
+ call s:RunDbgCmd(buf, ':breakadd expr g:someVar')
+ call s:RunDbgCmd(buf, ':call g:ChangeVar()', ['Oldval = "''foo''"', 'Newval = "''bar''"', 'function ChangeVar', 'line 2: echo "changed"'])
call StopVimInTerminal(buf)
endfunc
@@ -1068,17 +1068,17 @@
let buf = RunVimInTerminal('-S XtestDebug.vim', {})
- call RunDbgCmd(buf,':call SomeFunc()', ['line 2: echo "and"'])
- call RunDbgCmd(buf,'next', ['line 3: echo "there"'])
- call RunDbgCmd(buf,'next', ['line 4: breakadd func 2 LocalFunc'])
+ call s:RunDbgCmd(buf,':call SomeFunc()', ['line 2: echo "and"'])
+ call s:RunDbgCmd(buf,'next', ['line 3: echo "there"'])
+ call s:RunDbgCmd(buf,'next', ['line 4: breakadd func 2 LocalFunc'])
" continue, next breakpoint is in LocalFunc()
- call RunDbgCmd(buf,'cont', ['line 2: echo "second"'])
+ call s:RunDbgCmd(buf,'cont', ['line 2: echo "second"'])
" continue, next breakpoint is in LegacyFunc()
- call RunDbgCmd(buf,'cont', ['line 1: echo "legone"'])
+ call s:RunDbgCmd(buf,'cont', ['line 1: echo "legone"'])
- call RunDbgCmd(buf, 'cont')
+ call s:RunDbgCmd(buf, 'cont')
call StopVimInTerminal(buf)
endfunc
@@ -1140,68 +1140,68 @@
let buf = RunVimInTerminal('-S Xtest.vim', {})
- call RunDbgCmd(buf,
+ call s:RunDbgCmd(buf,
\ ':debug call Func()',
\ ['cmd: call Func()'])
- call RunDbgCmd(buf, 'next', ['result: 3'])
+ call s:RunDbgCmd(buf, 'next', ['result: 3'])
call term_sendkeys(buf, "\r")
- call RunDbgCmd(buf, 'cont')
+ call s:RunDbgCmd(buf, 'cont')
- call RunDbgCmd(buf,
+ call s:RunDbgCmd(buf,
\ ':debug call FuncWithArgs("asdf", 42, 1, 2, 3)',
\ ['cmd: call FuncWithArgs("asdf", 42, 1, 2, 3)'])
- call RunDbgCmd(buf, 'step', ['line 1: echo text .. nr'])
- call RunDbgCmd(buf, 'echo text', ['asdf'])
- call RunDbgCmd(buf, 'echo nr', ['42'])
- call RunDbgCmd(buf, 'echo items', ['[1, 2, 3]'])
- call RunDbgCmd(buf, 'step', ['asdf42', 'function FuncWithArgs', 'line 2: for it in items'])
- call RunDbgCmd(buf, 'step', ['function FuncWithArgs', 'line 2: for it in items'])
- call RunDbgCmd(buf, 'echo it', ['0'])
- call RunDbgCmd(buf, 'step', ['line 3: echo it'])
- call RunDbgCmd(buf, 'echo it', ['1'])
- call RunDbgCmd(buf, 'step', ['1', 'function FuncWithArgs', 'line 4: endfor'])
- call RunDbgCmd(buf, 'step', ['line 2: for it in items'])
- call RunDbgCmd(buf, 'echo it', ['1'])
- call RunDbgCmd(buf, 'step', ['line 3: echo it'])
- call RunDbgCmd(buf, 'step', ['2', 'function FuncWithArgs', 'line 4: endfor'])
- call RunDbgCmd(buf, 'step', ['line 2: for it in items'])
- call RunDbgCmd(buf, 'echo it', ['2'])
- call RunDbgCmd(buf, 'step', ['line 3: echo it'])
- call RunDbgCmd(buf, 'step', ['3', 'function FuncWithArgs', 'line 4: endfor'])
- call RunDbgCmd(buf, 'step', ['line 2: for it in items'])
- call RunDbgCmd(buf, 'step', ['line 5: echo "done"'])
- call RunDbgCmd(buf, 'cont')
+ call s:RunDbgCmd(buf, 'step', ['line 1: echo text .. nr'])
+ call s:RunDbgCmd(buf, 'echo text', ['asdf'])
+ call s:RunDbgCmd(buf, 'echo nr', ['42'])
+ call s:RunDbgCmd(buf, 'echo items', ['[1, 2, 3]'])
+ call s:RunDbgCmd(buf, 'step', ['asdf42', 'function FuncWithArgs', 'line 2: for it in items'])
+ call s:RunDbgCmd(buf, 'step', ['function FuncWithArgs', 'line 2: for it in items'])
+ call s:RunDbgCmd(buf, 'echo it', ['0'])
+ call s:RunDbgCmd(buf, 'step', ['line 3: echo it'])
+ call s:RunDbgCmd(buf, 'echo it', ['1'])
+ call s:RunDbgCmd(buf, 'step', ['1', 'function FuncWithArgs', 'line 4: endfor'])
+ call s:RunDbgCmd(buf, 'step', ['line 2: for it in items'])
+ call s:RunDbgCmd(buf, 'echo it', ['1'])
+ call s:RunDbgCmd(buf, 'step', ['line 3: echo it'])
+ call s:RunDbgCmd(buf, 'step', ['2', 'function FuncWithArgs', 'line 4: endfor'])
+ call s:RunDbgCmd(buf, 'step', ['line 2: for it in items'])
+ call s:RunDbgCmd(buf, 'echo it', ['2'])
+ call s:RunDbgCmd(buf, 'step', ['line 3: echo it'])
+ call s:RunDbgCmd(buf, 'step', ['3', 'function FuncWithArgs', 'line 4: endfor'])
+ call s:RunDbgCmd(buf, 'step', ['line 2: for it in items'])
+ call s:RunDbgCmd(buf, 'step', ['line 5: echo "done"'])
+ call s:RunDbgCmd(buf, 'cont')
- call RunDbgCmd(buf,
+ call s:RunDbgCmd(buf,
\ ':debug call FuncWithDict()',
\ ['cmd: call FuncWithDict()'])
- call RunDbgCmd(buf, 'step', ['line 1: var d = { a: 1, b: 2, }'])
- call RunDbgCmd(buf, 'step', ['line 6: def Inner()'])
- call RunDbgCmd(buf, 'cont')
+ call s:RunDbgCmd(buf, 'step', ['line 1: var d = { a: 1, b: 2, }'])
+ call s:RunDbgCmd(buf, 'step', ['line 6: def Inner()'])
+ call s:RunDbgCmd(buf, 'cont')
- call RunDbgCmd(buf, ':breakadd func 1 FuncComment')
- call RunDbgCmd(buf, ':call FuncComment()', ['function FuncComment', 'line 2: echo "first" .. "one"'])
- call RunDbgCmd(buf, ':breakadd func 3 FuncComment')
- call RunDbgCmd(buf, 'cont', ['function FuncComment', 'line 5: echo "second"'])
- call RunDbgCmd(buf, 'cont')
+ call s:RunDbgCmd(buf, ':breakadd func 1 FuncComment')
+ call s:RunDbgCmd(buf, ':call FuncComment()', ['function FuncComment', 'line 2: echo "first" .. "one"'])
+ call s:RunDbgCmd(buf, ':breakadd func 3 FuncComment')
+ call s:RunDbgCmd(buf, 'cont', ['function FuncComment', 'line 5: echo "second"'])
+ call s:RunDbgCmd(buf, 'cont')
- call RunDbgCmd(buf, ':breakadd func 2 FuncForLoop')
- call RunDbgCmd(buf, ':call FuncForLoop()', ['function FuncForLoop', 'line 2: for i in [11, 22, 33]'])
- call RunDbgCmd(buf, 'step', ['line 2: for i in [11, 22, 33]'])
- call RunDbgCmd(buf, 'next', ['function FuncForLoop', 'line 3: eval i + 2'])
- call RunDbgCmd(buf, 'echo i', ['11'])
- call RunDbgCmd(buf, 'next', ['function FuncForLoop', 'line 4: endfor'])
- call RunDbgCmd(buf, 'next', ['function FuncForLoop', 'line 2: for i in [11, 22, 33]'])
- call RunDbgCmd(buf, 'next', ['line 3: eval i + 2'])
- call RunDbgCmd(buf, 'echo i', ['22'])
+ call s:RunDbgCmd(buf, ':breakadd func 2 FuncForLoop')
+ call s:RunDbgCmd(buf, ':call FuncForLoop()', ['function FuncForLoop', 'line 2: for i in [11, 22, 33]'])
+ call s:RunDbgCmd(buf, 'step', ['line 2: for i in [11, 22, 33]'])
+ call s:RunDbgCmd(buf, 'next', ['function FuncForLoop', 'line 3: eval i + 2'])
+ call s:RunDbgCmd(buf, 'echo i', ['11'])
+ call s:RunDbgCmd(buf, 'next', ['function FuncForLoop', 'line 4: endfor'])
+ call s:RunDbgCmd(buf, 'next', ['function FuncForLoop', 'line 2: for i in [11, 22, 33]'])
+ call s:RunDbgCmd(buf, 'next', ['line 3: eval i + 2'])
+ call s:RunDbgCmd(buf, 'echo i', ['22'])
- call RunDbgCmd(buf, 'breakdel *')
- call RunDbgCmd(buf, 'cont')
+ call s:RunDbgCmd(buf, 'breakdel *')
+ call s:RunDbgCmd(buf, 'cont')
- call RunDbgCmd(buf, ':breakadd func FuncWithSplitLine')
- call RunDbgCmd(buf, ':call FuncWithSplitLine()', ['function FuncWithSplitLine', 'line 1: eval 1 + 2 | eval 2 + 3'])
+ call s:RunDbgCmd(buf, ':breakadd func FuncWithSplitLine')
+ call s:RunDbgCmd(buf, ':call FuncWithSplitLine()', ['function FuncWithSplitLine', 'line 1: eval 1 + 2 | eval 2 + 3'])
- call RunDbgCmd(buf, 'cont')
+ call s:RunDbgCmd(buf, 'cont')
call StopVimInTerminal(buf)
endfunc
@@ -1220,20 +1220,20 @@
let buf = RunVimInTerminal('-S XtestLambda.vim', {})
- call RunDbgCmd(buf,
+ call s:RunDbgCmd(buf,
\ ':call g:Func()',
\ ['function Func', 'line 2: [''b'']->map((_, v) => s)'])
- call RunDbgCmd(buf,
+ call s:RunDbgCmd(buf,
\ 'next',
\ ['function Func', 'line 3: echo "done"'])
- call RunDbgCmd(buf, 'cont')
+ call s:RunDbgCmd(buf, 'cont')
call StopVimInTerminal(buf)
endfunc
-func Test_debug_backtrace_level()
+def Test_debug_backtrace_level()
CheckCWD
- let lines =<< trim END
+ var lines =<< trim END
let s:file1_var = 'file1'
let g:global_var = 'global'
@@ -1246,9 +1246,9 @@
call s:File1Func( 'arg1' )
END
- call writefile(lines, 'Xtest1.vim', 'D')
+ writefile(lines, 'Xtest1.vim', 'D')
- let lines =<< trim END
+ lines =<< trim END
let s:file2_var = 'file2'
func s:File2Func( arg )
@@ -1259,168 +1259,168 @@
call s:File2Func( 'arg2' )
END
- call writefile(lines, 'Xtest2.vim', 'D')
+ writefile(lines, 'Xtest2.vim', 'D')
- let file1 = getcwd() .. '/Xtest1.vim'
- let file2 = getcwd() .. '/Xtest2.vim'
+ var file1 = getcwd() .. '/Xtest1.vim'
+ var file2 = getcwd() .. '/Xtest2.vim'
- " set a breakpoint and source file1.vim
- let buf = RunVimInTerminal(
- \ '-c "breakadd file 1 Xtest1.vim" -S Xtest1.vim',
- \ #{wait_for_ruler: 0})
+ # set a breakpoint and source file1.vim
+ var buf = g:RunVimInTerminal(
+ '-c "breakadd file 1 Xtest1.vim" -S Xtest1.vim',
+ {wait_for_ruler: 0})
- call CheckDbgOutput(buf, [
- \ 'Breakpoint in "' .. file1 .. '" line 1',
- \ 'Entering Debug mode. Type "cont" to continue.',
- \ 'command line..script ' .. file1,
- \ 'line 1: let s:file1_var = ''file1'''
- \ ], #{msec: 5000})
+ s:CheckDbgOutput(buf, [
+ 'Breakpoint in "' .. file1 .. '" line 1',
+ 'Entering Debug mode. Type "cont" to continue.',
+ 'command line..script ' .. file1,
+ 'line 1: let s:file1_var = ''file1'''
+ ], {msec: 5000})
- " step through the initial declarations
- call RunDbgCmd(buf, 'step', [ 'line 2: let g:global_var = ''global''' ] )
- call RunDbgCmd(buf, 'step', [ 'line 4: func s:File1Func( arg )' ] )
- call RunDbgCmd(buf, 'echo s:file1_var', [ 'file1' ] )
- call RunDbgCmd(buf, 'echo g:global_var', [ 'global' ] )
- call RunDbgCmd(buf, 'echo global_var', [ 'global' ] )
+ # step through the initial declarations
+ s:RunDbgCmd(buf, 'step', [ 'line 2: let g:global_var = ''global''' ] )
+ s:RunDbgCmd(buf, 'step', [ 'line 4: func s:File1Func( arg )' ] )
+ s:RunDbgCmd(buf, 'echo s:file1_var', [ 'file1' ] )
+ s:RunDbgCmd(buf, 'echo g:global_var', [ 'global' ] )
+ s:RunDbgCmd(buf, 'echo global_var', [ 'global' ] )
- " step in to the first function
- call RunDbgCmd(buf, 'step', [ 'line 11: call s:File1Func( ''arg1'' )' ] )
- call RunDbgCmd(buf, 'step', [ 'line 1: let s:file1_var .= a:arg' ] )
- call RunDbgCmd(buf, 'echo a:arg', [ 'arg1' ] )
- call RunDbgCmd(buf, 'echo s:file1_var', [ 'file1' ] )
- call RunDbgCmd(buf, 'echo g:global_var', [ 'global' ] )
- call RunDbgCmd(buf,
- \'echo global_var',
- \[ 'E121: Undefined variable: global_var' ] )
- call RunDbgCmd(buf,
- \'echo local_var',
- \[ 'E121: Undefined variable: local_var' ] )
- call RunDbgCmd(buf,
- \'echo l:local_var',
- \[ 'E121: Undefined variable: l:local_var' ] )
+ # step in to the first function
+ s:RunDbgCmd(buf, 'step', [ 'line 11: call s:File1Func( ''arg1'' )' ] )
+ s:RunDbgCmd(buf, 'step', [ 'line 1: let s:file1_var .= a:arg' ] )
+ s:RunDbgCmd(buf, 'echo a:arg', [ 'arg1' ] )
+ s:RunDbgCmd(buf, 'echo s:file1_var', [ 'file1' ] )
+ s:RunDbgCmd(buf, 'echo g:global_var', [ 'global' ] )
+ s:RunDbgCmd(buf,
+ 'echo global_var',
+ [ 'E121: Undefined variable: global_var' ] )
+ s:RunDbgCmd(buf,
+ 'echo local_var',
+ [ 'E121: Undefined variable: local_var' ] )
+ s:RunDbgCmd(buf,
+ 'echo l:local_var',
+ [ 'E121: Undefined variable: l:local_var' ] )
- " backtrace up
- call RunDbgCmd(buf, 'backtrace', [
- \ '\V>backtrace',
- \ '\V 2 command line',
- \ '\V 1 script ' .. file1 .. '[11]',
- \ '\V->0 function <SNR>\.\*_File1Func',
- \ '\Vline 1: let s:file1_var .= a:arg',
- \ ],
- \ #{ match: 'pattern' } )
- call RunDbgCmd(buf, 'up', [ '>up' ] )
+ # backtrace up
+ s:RunDbgCmd(buf, 'backtrace', [
+ '\V>backtrace',
+ '\V 2 command line',
+ '\V 1 script ' .. file1 .. '[11]',
+ '\V->0 function <SNR>\.\*_File1Func',
+ '\Vline 1: let s:file1_var .= a:arg',
+ ],
+ { match: 'pattern' } )
+ s:RunDbgCmd(buf, 'up', [ '>up' ] )
- call RunDbgCmd(buf, 'backtrace', [
- \ '\V>backtrace',
- \ '\V 2 command line',
- \ '\V->1 script ' .. file1 .. '[11]',
- \ '\V 0 function <SNR>\.\*_File1Func',
- \ '\Vline 1: let s:file1_var .= a:arg',
- \ ],
- \ #{ match: 'pattern' } )
+ s:RunDbgCmd(buf, 'backtrace', [
+ '\V>backtrace',
+ '\V 2 command line',
+ '\V->1 script ' .. file1 .. '[11]',
+ '\V 0 function <SNR>\.\*_File1Func',
+ '\Vline 1: let s:file1_var .= a:arg',
+ ],
+ { match: 'pattern' } )
- " Expression evaluation in the script frame (not the function frame)
- " FIXME: Unexpected in this scope (a: should not be visible)
- call RunDbgCmd(buf, 'echo a:arg', [ 'arg1' ] )
- call RunDbgCmd(buf, 'echo s:file1_var', [ 'file1' ] )
- call RunDbgCmd(buf, 'echo g:global_var', [ 'global' ] )
- " FIXME: Unexpected in this scope (global should be found)
- call RunDbgCmd(buf,
- \'echo global_var',
- \[ 'E121: Undefined variable: global_var' ] )
- call RunDbgCmd(buf,
- \'echo local_var',
- \[ 'E121: Undefined variable: local_var' ] )
- call RunDbgCmd(buf,
- \'echo l:local_var',
- \[ 'E121: Undefined variable: l:local_var' ] )
+ # Expression evaluation in the script frame (not the function frame)
+ # FIXME: Unexpected in this scope (a: should not be visible)
+ s:RunDbgCmd(buf, 'echo a:arg', [ 'arg1' ] )
+ s:RunDbgCmd(buf, 'echo s:file1_var', [ 'file1' ] )
+ s:RunDbgCmd(buf, 'echo g:global_var', [ 'global' ] )
+ # FIXME: Unexpected in this scope (global should be found)
+ s:RunDbgCmd(buf,
+ 'echo global_var',
+ [ 'E121: Undefined variable: global_var' ] )
+ s:RunDbgCmd(buf,
+ 'echo local_var',
+ [ 'E121: Undefined variable: local_var' ] )
+ s:RunDbgCmd(buf,
+ 'echo l:local_var',
+ [ 'E121: Undefined variable: l:local_var' ] )
- " step while backtraced jumps to the latest frame
- call RunDbgCmd(buf, 'step', [
- \ 'line 2: let local_var = s:file1_var .. '' test1''' ] )
- call RunDbgCmd(buf, 'backtrace', [
- \ '\V>backtrace',
- \ '\V 2 command line',
- \ '\V 1 script ' .. file1 .. '[11]',
- \ '\V->0 function <SNR>\.\*_File1Func',
- \ '\Vline 2: let local_var = s:file1_var .. '' test1''',
- \ ],
- \ #{ match: 'pattern' } )
+ # step while backtraced jumps to the latest frame
+ s:RunDbgCmd(buf, 'step', [
+ 'line 2: let local_var = s:file1_var .. '' test1''' ] )
+ s:RunDbgCmd(buf, 'backtrace', [
+ '\V>backtrace',
+ '\V 2 command line',
+ '\V 1 script ' .. file1 .. '[11]',
+ '\V->0 function <SNR>\.\*_File1Func',
+ '\Vline 2: let local_var = s:file1_var .. '' test1''',
+ ],
+ { match: 'pattern' } )
- call RunDbgCmd(buf, 'step', [ 'line 3: let g:global_var .= local_var' ] )
- call RunDbgCmd(buf, 'echo local_var', [ 'file1arg1 test1' ] )
- call RunDbgCmd(buf, 'echo l:local_var', [ 'file1arg1 test1' ] )
+ s:RunDbgCmd(buf, 'step', [ 'line 3: let g:global_var .= local_var' ] )
+ s:RunDbgCmd(buf, 'echo local_var', [ 'file1arg1 test1' ] )
+ s:RunDbgCmd(buf, 'echo l:local_var', [ 'file1arg1 test1' ] )
- call RunDbgCmd(buf, 'step', [ 'line 4: source Xtest2.vim' ] )
- call RunDbgCmd(buf, 'step', [ 'line 1: let s:file2_var = ''file2''' ] )
- call RunDbgCmd(buf, 'backtrace', [
- \ '\V>backtrace',
- \ '\V 3 command line',
- \ '\V 2 script ' .. file1 .. '[11]',
- \ '\V 1 function <SNR>\.\*_File1Func[4]',
- \ '\V->0 script ' .. file2,
- \ '\Vline 1: let s:file2_var = ''file2''',
- \ ],
- \ #{ match: 'pattern' } )
+ s:RunDbgCmd(buf, 'step', [ 'line 4: source Xtest2.vim' ] )
+ s:RunDbgCmd(buf, 'step', [ 'line 1: let s:file2_var = ''file2''' ] )
+ s:RunDbgCmd(buf, 'backtrace', [
+ '\V>backtrace',
+ '\V 3 command line',
+ '\V 2 script ' .. file1 .. '[11]',
+ '\V 1 function <SNR>\.\*_File1Func[4]',
+ '\V->0 script ' .. file2,
+ '\Vline 1: let s:file2_var = ''file2''',
+ ],
+ { match: 'pattern' } )
- " Expression evaluation in the script frame file2 (not the function frame)
- call RunDbgCmd(buf, 'echo a:arg', [ 'E121: Undefined variable: a:arg' ] )
- call RunDbgCmd(buf,
- \ 'echo s:file1_var',
- \ [ 'E121: Undefined variable: s:file1_var' ] )
- call RunDbgCmd(buf, 'echo g:global_var', [ 'globalfile1arg1 test1' ] )
- call RunDbgCmd(buf, 'echo global_var', [ 'globalfile1arg1 test1' ] )
- call RunDbgCmd(buf,
- \'echo local_var',
- \[ 'E121: Undefined variable: local_var' ] )
- call RunDbgCmd(buf,
- \'echo l:local_var',
- \[ 'E121: Undefined variable: l:local_var' ] )
- call RunDbgCmd(buf,
- \ 'echo s:file2_var',
- \ [ 'E121: Undefined variable: s:file2_var' ] )
+ # Expression evaluation in the script frame file2 (not the function frame)
+ s:RunDbgCmd(buf, 'echo a:arg', [ 'E121: Undefined variable: a:arg' ] )
+ s:RunDbgCmd(buf,
+ 'echo s:file1_var',
+ [ 'E121: Undefined variable: s:file1_var' ] )
+ s:RunDbgCmd(buf, 'echo g:global_var', [ 'globalfile1arg1 test1' ] )
+ s:RunDbgCmd(buf, 'echo global_var', [ 'globalfile1arg1 test1' ] )
+ s:RunDbgCmd(buf,
+ 'echo local_var',
+ [ 'E121: Undefined variable: local_var' ] )
+ s:RunDbgCmd(buf,
+ 'echo l:local_var',
+ [ 'E121: Undefined variable: l:local_var' ] )
+ s:RunDbgCmd(buf,
+ 'echo s:file2_var',
+ [ 'E121: Undefined variable: s:file2_var' ] )
- call RunDbgCmd(buf, 'step', [ 'line 3: func s:File2Func( arg )' ] )
- call RunDbgCmd(buf, 'echo s:file2_var', [ 'file2' ] )
+ s:RunDbgCmd(buf, 'step', [ 'line 3: func s:File2Func( arg )' ] )
+ s:RunDbgCmd(buf, 'echo s:file2_var', [ 'file2' ] )
- " Up the stack to the other script context
- call RunDbgCmd(buf, 'up')
- call RunDbgCmd(buf, 'backtrace', [
- \ '\V>backtrace',
- \ '\V 3 command line',
- \ '\V 2 script ' .. file1 .. '[11]',
- \ '\V->1 function <SNR>\.\*_File1Func[4]',
- \ '\V 0 script ' .. file2,
- \ '\Vline 3: func s:File2Func( arg )',
- \ ],
- \ #{ match: 'pattern' } )
- " FIXME: Unexpected. Should see the a: and l: dicts from File1Func
- call RunDbgCmd(buf, 'echo a:arg', [ 'E121: Undefined variable: a:arg' ] )
- call RunDbgCmd(buf,
- \ 'echo l:local_var',
- \ [ 'E121: Undefined variable: l:local_var' ] )
+ # Up the stack to the other script context
+ s:RunDbgCmd(buf, 'up')
+ s:RunDbgCmd(buf, 'backtrace', [
+ '\V>backtrace',
+ '\V 3 command line',
+ '\V 2 script ' .. file1 .. '[11]',
+ '\V->1 function <SNR>\.\*_File1Func[4]',
+ '\V 0 script ' .. file2,
+ '\Vline 3: func s:File2Func( arg )',
+ ],
+ { match: 'pattern' } )
+ # FIXME: Unexpected. Should see the a: and l: dicts from File1Func
+ s:RunDbgCmd(buf, 'echo a:arg', [ 'E121: Undefined variable: a:arg' ] )
+ s:RunDbgCmd(buf,
+ 'echo l:local_var',
+ [ 'E121: Undefined variable: l:local_var' ] )
- call RunDbgCmd(buf, 'up')
- call RunDbgCmd(buf, 'backtrace', [
- \ '\V>backtrace',
- \ '\V 3 command line',
- \ '\V->2 script ' .. file1 .. '[11]',
- \ '\V 1 function <SNR>\.\*_File1Func[4]',
- \ '\V 0 script ' .. file2,
- \ '\Vline 3: func s:File2Func( arg )',
- \ ],
- \ #{ match: 'pattern' } )
+ s:RunDbgCmd(buf, 'up')
+ s:RunDbgCmd(buf, 'backtrace', [
+ '\V>backtrace',
+ '\V 3 command line',
+ '\V->2 script ' .. file1 .. '[11]',
+ '\V 1 function <SNR>\.\*_File1Func[4]',
+ '\V 0 script ' .. file2,
+ '\Vline 3: func s:File2Func( arg )',
+ ],
+ { match: 'pattern' } )
- " FIXME: Unexpected (wrong script vars are used)
- call RunDbgCmd(buf,
- \ 'echo s:file1_var',
- \ [ 'E121: Undefined variable: s:file1_var' ] )
- call RunDbgCmd(buf, 'echo s:file2_var', [ 'file2' ] )
+ # FIXME: Unexpected (wrong script vars are used)
+ s:RunDbgCmd(buf,
+ 'echo s:file1_var',
+ [ 'E121: Undefined variable: s:file1_var' ] )
+ s:RunDbgCmd(buf, 'echo s:file2_var', [ 'file2' ] )
- call RunDbgCmd(buf, 'cont')
- call StopVimInTerminal(buf)
-endfunc
+ s:RunDbgCmd(buf, 'cont')
+ g:StopVimInTerminal(buf)
+enddef
" Test for setting a breakpoint on a :endif where the :if condition is false
" and then quit the script. This should generate an interrupt.
diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim
index e02872f..d2160ec 100644
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -704,27 +704,29 @@
\ 'bzl': ['file.BUILD', 'BUILD'],
\ }
-func CheckItems(checks)
+def CheckItems(checks: dict<list<string>>)
set noswapfile
- for [ft, names] in items(a:checks)
+
+ for [ft, names] in items(checks)
for i in range(0, len(names) - 1)
new
try
- exe 'edit ' . fnameescape(names[i])
+ exe 'edit ' .. fnameescape(names[i])
catch
- call assert_report('cannot edit "' . names[i] . '": ' . v:exception)
+ assert_report('cannot edit "' .. names[i] .. '": ' .. v:exception)
endtry
if &filetype == '' && &readonly
- " File exists but not able to edit it (permission denied)
+ # File exists but not able to edit it (permission denied)
else
- let expected = ft == 'none' ? '' : ft
- call assert_equal(expected, &filetype, 'with file name: ' . names[i])
+ var expected = ft == 'none' ? '' : ft
+ assert_equal(expected, &filetype, 'with file name: ' .. names[i])
endif
bwipe!
endfor
endfor
+
set swapfile&
-endfunc
+enddef
func Test_filetype_detection()
filetype on
diff --git a/src/version.c b/src/version.c
index f7ea30f..07fec75 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1570,
+/**/
1569,
/**/
1568,