changeset 32477:0a0b9371957f v9.0.1570

patch 9.0.1570: some tests are slow Commit: https://github.com/vim/vim/commit/bf63011a52a3cc32609ae5945665875062a5ae50 Author: Bram Moolenaar <Bram@vim.org> Date: Fri May 19 21:41:02 2023 +0100 patch 9.0.1570: some tests are slow Problem: Some tests are slow. Solution: Make a few test cases faster.
author Bram Moolenaar <Bram@vim.org>
date Fri, 19 May 2023 22:45:03 +0200
parents 2dd215ad5fc2
children 8117806f2947
files src/testdir/test_cmdline.vim src/testdir/test_codestyle.vim src/testdir/test_debugger.vim src/testdir/test_filetype.vim src/version.c
diffstat 5 files changed, 582 insertions(+), 577 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -791,10 +791,10 @@ func Test_shellcmd_completion()
 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
 
--- 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 @@ def Test_source_files()
     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)
--- a/src/testdir/test_debugger.vim
+++ b/src/testdir/test_debugger.vim
@@ -20,39 +20,39 @@ command! -nargs=0 -bar CheckCWD call Che
 " "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 @@ func Test_Debugger()
           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 @@ func Test_Debugger_breakadd()
 
   " 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 @@ func Test_Debugger_breakadd_expr()
 
   " 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 @@ def Test_Debugger_breakadd_vim9_expr()
   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 @@ def Test_Debugger_break_at_return()
   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 @@ func Test_Backtrace_Through_Source()
 
   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 @@ func Test_Backtrace_Through_Source()
 
   " 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 @@ func Test_Backtrace_Through_Source()
         \ '->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 @@ func Test_Backtrace_Through_Source()
         \ '  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 @@ func Test_Backtrace_Through_Source()
         \ '  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 @@ func Test_Backtrace_Through_Source()
         \ '  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 @@ func Test_Backtrace_Through_Source()
         \ '  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 @@ func Test_Backtrace_Through_Source()
         \ '  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 @@ func Test_Backtrace_Through_Source()
         \ '  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 @@ func Test_Backtrace_Through_Source()
         \ '->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 @@ func Test_Backtrace_Through_Source()
         \ '->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 @@ func Test_Backtrace_Through_Source()
         \ '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 @@ func Test_Backtrace_Autocmd()
 
   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 @@ func Test_Backtrace_Autocmd()
 
   " 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 @@ func Test_Backtrace_Autocmd()
         \ '->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 @@ func Test_Backtrace_Autocmd()
         \ '  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 @@ func Test_Backtrace_Autocmd()
         \ '  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 @@ func Test_Backtrace_Autocmd()
         \ '  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 @@ func Test_Backtrace_Autocmd()
         \ '  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 @@ func Test_Backtrace_Autocmd()
         \ '  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 @@ func Test_Backtrace_Autocmd()
         \ '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 @@ func Test_Backtrace_Autocmd()
         \ '  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 @@ func Test_Backtrace_Autocmd()
         \ '  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 @@ func Test_Backtrace_Autocmd()
         \ '->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 @@ func Test_Backtrace_Autocmd()
         \ '->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 @@ func Test_Backtrace_Autocmd()
         \ '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 @@ func Test_Backtrace_Autocmd()
 
   " 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 @@ func Test_Backtrace_Autocmd()
         \ '->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 @@ func Test_Backtrace_CmdLine()
 
   " 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 @@ func Test_Backtrace_DefFunction()
 
   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 @@ func Test_Backtrace_DefFunction()
         \ #{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 @@ func Test_DefFunction_expr()
   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 @@ func Test_debug_def_and_legacy_function(
 
   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 @@ func Test_debug_def_function()
 
   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 @@ func Test_debug_def_function_with_lambda
 
   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 @@ func Test_debug_backtrace_level()
 
     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 @@ func Test_debug_backtrace_level()
 
     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.
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -704,27 +704,29 @@ let s:filename_case_checks = {
     \ '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
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1570,
+/**/
     1569,
 /**/
     1568,