diff options
| author | dundargoc <33953936+dundargoc@users.noreply.github.com> | 2023-03-07 04:13:04 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-07 11:13:04 +0800 |
| commit | af23d173883f47fd02a9a380c719e4428370b484 (patch) | |
| tree | d5da436c1539905528254225dd8f817f1577fb84 /test/old/testdir/script_util.vim | |
| parent | bf4eada2c83f5402fc56370fd22af11029a4a3aa (diff) | |
| download | rneovim-af23d173883f47fd02a9a380c719e4428370b484.tar.gz rneovim-af23d173883f47fd02a9a380c719e4428370b484.tar.bz2 rneovim-af23d173883f47fd02a9a380c719e4428370b484.zip | |
test: move oldtests to test directory (#22536)
The new oldtest directory is in test/old/testdir. The reason for this is
that many tests have hardcoded the parent directory name to be
'testdir'.
Diffstat (limited to 'test/old/testdir/script_util.vim')
| -rw-r--r-- | test/old/testdir/script_util.vim | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/test/old/testdir/script_util.vim b/test/old/testdir/script_util.vim new file mode 100644 index 0000000000..28d6a621d6 --- /dev/null +++ b/test/old/testdir/script_util.vim @@ -0,0 +1,69 @@ +" Functions shared by the tests for Vim Script + +" Commands to track the execution path of a script +com! XpathINIT let g:Xpath = '' +com! -nargs=1 -bar Xpath let g:Xpath ..= <args> +com! XloopINIT let g:Xloop = 1 +com! -nargs=1 -bar Xloop let g:Xpath ..= <args> .. g:Xloop +com! XloopNEXT let g:Xloop += 1 + +" MakeScript() - Make a script file from a function. {{{2 +" +" Create a script that consists of the body of the function a:funcname. +" Replace any ":return" by a ":finish", any argument variable by a global +" variable, and every ":call" by a ":source" for the next following argument +" in the variable argument list. This function is useful if similar tests are +" to be made for a ":return" from a function call or a ":finish" in a script +" file. +func MakeScript(funcname, ...) + let script = tempname() + execute "redir! >" . script + execute "function" a:funcname + redir END + execute "edit" script + " Delete the "function" and the "endfunction" lines. Do not include the + " word "function" in the pattern since it might be translated if LANG is + " set. When MakeScript() is being debugged, this deletes also the debugging + " output of its line 3 and 4. + exec '1,/.*' . a:funcname . '(.*)/d' + /^\d*\s*endfunction\>/,$d + %s/^\d*//e + %s/return/finish/e + %s/\<a:\(\h\w*\)/g:\1/ge + normal gg0 + let cnt = 0 + while search('\<call\s*\%(\u\|s:\)\w*\s*(.*)', 'W') > 0 + let cnt = cnt + 1 + s/\<call\s*\%(\u\|s:\)\w*\s*(.*)/\='source ' . a:{cnt}/ + endwhile + g/^\s*$/d + write + bwipeout + return script +endfunc + +" ExecAsScript - Source a temporary script made from a function. {{{2 +" +" Make a temporary script file from the function a:funcname, ":source" it, and +" delete it afterwards. However, if an exception is thrown the file may remain, +" the caller should call DeleteTheScript() afterwards. +let s:script_name = '' +func ExecAsScript(funcname) + " Make a script from the function passed as argument. + let s:script_name = MakeScript(a:funcname) + + " Source and delete the script. + exec "source" s:script_name + call delete(s:script_name) + let s:script_name = '' +endfunc + +func DeleteTheScript() + if s:script_name + call delete(s:script_name) + let s:script_name = '' + endif +endfunc + +com! -nargs=1 -bar ExecAsScript call ExecAsScript(<f-args>) + |