aboutsummaryrefslogtreecommitdiff
path: root/test/functional/legacy/060_exists_and_has_functions_spec.lua
diff options
context:
space:
mode:
authorLucas Hoffmann <l-m-h@web.de>2015-05-15 19:03:48 +0200
committerJustin M. Keyes <justinkz@gmail.com>2015-05-27 12:06:13 -0400
commita4c22c95e34080b7c9d0d704f1850dd109346622 (patch)
tree53522fead3d936f8c9b6446f41ed647936f0ce36 /test/functional/legacy/060_exists_and_has_functions_spec.lua
parent943c7479c79c156463464ec6d10929f6cef57c45 (diff)
downloadrneovim-a4c22c95e34080b7c9d0d704f1850dd109346622.tar.gz
rneovim-a4c22c95e34080b7c9d0d704f1850dd109346622.tar.bz2
rneovim-a4c22c95e34080b7c9d0d704f1850dd109346622.zip
tests: Migrate legacy test 60. #2721
Helped-By: Justin M. Keyes <justinkz@gmail.com>
Diffstat (limited to 'test/functional/legacy/060_exists_and_has_functions_spec.lua')
-rw-r--r--test/functional/legacy/060_exists_and_has_functions_spec.lua871
1 files changed, 871 insertions, 0 deletions
diff --git a/test/functional/legacy/060_exists_and_has_functions_spec.lua b/test/functional/legacy/060_exists_and_has_functions_spec.lua
new file mode 100644
index 0000000000..d30f83dc6d
--- /dev/null
+++ b/test/functional/legacy/060_exists_and_has_functions_spec.lua
@@ -0,0 +1,871 @@
+-- Tests for the exists() and has() functions. ts=8 sw=2
+
+local helpers = require('test.functional.helpers')
+local feed, insert, source = helpers.feed, helpers.insert, helpers.source
+local clear, execute, expect = helpers.clear, helpers.execute, helpers.expect
+local os = require('os')
+
+describe('exists() and has() functions', function()
+ setup(clear)
+
+ it('is working', function()
+
+ -- Create a temporary script needed for the test.
+ local script = io.open('test60.vim', 'w')
+ script:write(helpers.dedent([=[
+ " Vim script for exists() function test
+ " Script-local variables are checked here
+
+ " Existing script-local variable
+ let s:script_var = 1
+ echo 's:script_var: 1'
+ if exists('s:script_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+
+ " Non-existing script-local variable
+ unlet s:script_var
+ echo 's:script_var: 0'
+ if !exists('s:script_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+
+ " Existing script-local list
+ let s:script_list = ["blue", "orange"]
+ echo 's:script_list: 1'
+ if exists('s:script_list')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+
+ " Non-existing script-local list
+ unlet s:script_list
+ echo 's:script_list: 0'
+ if !exists('s:script_list')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+
+ " Existing script-local dictionary
+ let s:script_dict = {"xcord":100, "ycord":2}
+ echo 's:script_dict: 1'
+ if exists('s:script_dict')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+
+ " Non-existing script-local dictionary
+ unlet s:script_dict
+ echo 's:script_dict: 0'
+ if !exists('s:script_dict')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+
+ " Existing script curly-brace variable
+ let str = "script"
+ let s:curly_{str}_var = 1
+ echo 's:curly_' . str . '_var: 1'
+ if exists('s:curly_{str}_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+
+ " Non-existing script-local curly-brace variable
+ unlet s:curly_{str}_var
+ echo 's:curly_' . str . '_var: 0'
+ if !exists('s:curly_{str}_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+
+ " Existing script-local function
+ function! s:my_script_func()
+ endfunction
+
+ echo '*s:my_script_func: 1'
+ if exists('*s:my_script_func')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+
+ " Non-existing script-local function
+ delfunction s:my_script_func
+
+ echo '*s:my_script_func: 0'
+ if !exists('*s:my_script_func')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ unlet str
+ ]=]))
+ script:flush()
+ script:close()
+
+ source([=[
+ " Add the special directory with test scripts to &rtp
+ set rtp+=test/functional/fixtures
+ set wildchar=^E
+ function! RunTest(str, result)
+ if exists(a:str) == a:result
+ echo "OK"
+ else
+ echo "FAILED: Checking for " . a:str
+ endif
+ endfunction
+ function! TestExists()
+ augroup myagroup
+ autocmd! BufEnter *.my echo "myfile edited"
+ autocmd! FuncUndefined UndefFun exec "fu UndefFun()\nendfu"
+ augroup END
+ set rtp+=./sautest
+ let test_cases = []
+ " Valid autocmd group.
+ let test_cases += [['#myagroup', 1]]
+ " Valid autocmd group with garbage.
+ let test_cases += [['#myagroup+b', 0]]
+ " Valid autocmd group and event.
+ let test_cases += [['#myagroup#BufEnter', 1]]
+ " Valid autocmd group, event and pattern.
+ let test_cases += [['#myagroup#BufEnter#*.my', 1]]
+ " Valid autocmd event.
+ let test_cases += [['#BufEnter', 1]]
+ " Valid autocmd event and pattern.
+ let test_cases += [['#BufEnter#*.my', 1]]
+ " Non-existing autocmd group or event.
+ let test_cases += [['#xyzagroup', 0]]
+ " Non-existing autocmd group and valid autocmd event.
+ let test_cases += [['#xyzagroup#BufEnter', 0]]
+ " Valid autocmd group and event with no matching pattern.
+ let test_cases += [['#myagroup#CmdwinEnter', 0]]
+ " Valid autocmd group and non-existing autocmd event.
+ let test_cases += [['#myagroup#xyzacmd', 0]]
+ " Valid autocmd group and event and non-matching pattern.
+ let test_cases += [['#myagroup#BufEnter#xyzpat', 0]]
+ " Valid autocmd event and non-matching pattern.
+ let test_cases += [['#BufEnter#xyzpat', 0]]
+ " Empty autocmd group, event and pattern.
+ let test_cases += [['###', 0]]
+ " Empty autocmd group and event or empty event and pattern.
+ let test_cases += [['##', 0]]
+ " Valid autocmd event.
+ let test_cases += [['##FileReadCmd', 1]]
+ " Non-existing autocmd event.
+ let test_cases += [['##MySpecialCmd', 0]]
+ " Existing and working option (long form).
+ let test_cases += [['&textwidth', 1]]
+ " Existing and working option (short form).
+ let test_cases += [['&tw', 1]]
+ " Existing and working option with garbage.
+ let test_cases += [['&tw-', 0]]
+ " Global option.
+ let test_cases += [['&g:errorformat', 1]]
+ " Local option.
+ let test_cases += [['&l:errorformat', 1]]
+ " Negative form of existing and working option (long form).
+ let test_cases += [['&nojoinspaces', 0]]
+ " Negative form of existing and working option (short form).
+ let test_cases += [['&nojs', 0]]
+ " Non-existing option.
+ let test_cases += [['&myxyzoption', 0]]
+ " Existing and working option (long form).
+ let test_cases += [['+incsearch', 1]]
+ " Existing and working option with garbage.
+ let test_cases += [['+incsearch!1', 0]]
+ " Existing and working option (short form).
+ let test_cases += [['+is', 1]]
+ " Existing option that is hidden.
+ let test_cases += [['+mouseshape', 0]]
+ " Existing environment variable.
+ let $EDITOR_NAME = 'Vim Editor'
+ let test_cases += [['$EDITOR_NAME', 1]]
+ " Non-existing environment variable.
+ let test_cases += [['$NON_ENV_VAR', 0]]
+ " Valid internal function.
+ let test_cases += [['*bufnr', 1]]
+ " Valid internal function with ().
+ let test_cases += [['*bufnr()', 1]]
+ " Non-existing internal function.
+ let test_cases += [['*myxyzfunc', 0]]
+ " Valid internal function with garbage.
+ let test_cases += [['*bufnr&6', 0]]
+ " Valid user defined function.
+ let test_cases += [['*TestExists', 1]]
+ " Non-existing user defined function.
+ let test_cases += [['*MyxyzFunc', 0]]
+ " Function that may be created by FuncUndefined event.
+ let test_cases += [['*UndefFun', 0]]
+ " Function that may be created by script autoloading.
+ let test_cases += [['*footest#F', 0]]
+ redir! > test.out
+ for [test_case, result] in test_cases
+ echo test_case . ": " . result
+ call RunTest(test_case, result)
+ endfor
+ " Valid internal command (full match).
+ echo ':edit: 2'
+ if exists(':edit') == 2
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Valid internal command (full match) with garbage.
+ echo ':edit/a: 0'
+ if exists(':edit/a') == 0
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Valid internal command (partial match).
+ echo ':q: 1'
+ if exists(':q') == 1
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing internal command.
+ echo ':invalidcmd: 0'
+ if !exists(':invalidcmd')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " User defined command (full match).
+ command! MyCmd :echo 'My command'
+ echo ':MyCmd: 2'
+ if exists(':MyCmd') == 2
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " User defined command (partial match).
+ command! MyOtherCmd :echo 'Another command'
+ echo ':My: 3'
+ if exists(':My') == 3
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Command modifier.
+ echo ':rightbelow: 2'
+ if exists(':rightbelow') == 2
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing user defined command (full match).
+ delcommand MyCmd
+ echo ':MyCmd: 0'
+ if !exists(':MyCmd')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing user defined command (partial match).
+ delcommand MyOtherCmd
+ echo ':My: 0'
+ if !exists(':My')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Valid local variable.
+ let local_var = 1
+ echo 'local_var: 1'
+ if exists('local_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Valid local variable with garbage.
+ let local_var = 1
+ echo 'local_var%n: 0'
+ if !exists('local_var%n')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing local variable.
+ unlet local_var
+ echo 'local_var: 0'
+ if !exists('local_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing autoload variable that may be autoloaded.
+ echo 'footest#x: 0'
+ if !exists('footest#x')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Valid local list.
+ let local_list = ["blue", "orange"]
+ echo 'local_list: 1'
+ if exists('local_list')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Valid local list item.
+ echo 'local_list[1]: 1'
+ if exists('local_list[1]')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Valid local list item with garbage.
+ echo 'local_list[1]+5: 0'
+ if !exists('local_list[1]+5')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Invalid local list item.
+ echo 'local_list[2]: 0'
+ if !exists('local_list[2]')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing local list.
+ unlet local_list
+ echo 'local_list: 0'
+ if !exists('local_list')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Valid local dictionary.
+ let local_dict = {"xcord":100, "ycord":2}
+ echo 'local_dict: 1'
+ if exists('local_dict')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing local dictionary.
+ unlet local_dict
+ echo 'local_dict: 0'
+ if !exists('local_dict')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing local curly-brace variable.
+ let str = "local"
+ let curly_{str}_var = 1
+ echo 'curly_' . str . '_var: 1'
+ if exists('curly_{str}_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing local curly-brace variable.
+ unlet curly_{str}_var
+ echo 'curly_' . str . '_var: 0'
+ if !exists('curly_{str}_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing global variable.
+ let g:global_var = 1
+ echo 'g:global_var: 1'
+ if exists('g:global_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing global variable with garbage.
+ echo 'g:global_var-n: 1'
+ if !exists('g:global_var-n')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing global variable.
+ unlet g:global_var
+ echo 'g:global_var: 0'
+ if !exists('g:global_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing global list.
+ let g:global_list = ["blue", "orange"]
+ echo 'g:global_list: 1'
+ if exists('g:global_list')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing global list.
+ unlet g:global_list
+ echo 'g:global_list: 0'
+ if !exists('g:global_list')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing global dictionary.
+ let g:global_dict = {"xcord":100, "ycord":2}
+ echo 'g:global_dict: 1'
+ if exists('g:global_dict')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing global dictionary.
+ unlet g:global_dict
+ echo 'g:global_dict: 0'
+ if !exists('g:global_dict')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing global curly-brace variable.
+ let str = "global"
+ let g:curly_{str}_var = 1
+ echo 'g:curly_' . str . '_var: 1'
+ if exists('g:curly_{str}_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing global curly-brace variable.
+ unlet g:curly_{str}_var
+ echo 'g:curly_' . str . '_var: 0'
+ if !exists('g:curly_{str}_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing window variable.
+ echo 'w:window_var: 1'
+ let w:window_var = 1
+ if exists('w:window_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing window variable.
+ unlet w:window_var
+ echo 'w:window_var: 0'
+ if !exists('w:window_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing window list.
+ let w:window_list = ["blue", "orange"]
+ echo 'w:window_list: 1'
+ if exists('w:window_list')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing window list.
+ unlet w:window_list
+ echo 'w:window_list: 0'
+ if !exists('w:window_list')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing window dictionary.
+ let w:window_dict = {"xcord":100, "ycord":2}
+ echo 'w:window_dict: 1'
+ if exists('w:window_dict')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing window dictionary.
+ unlet w:window_dict
+ echo 'w:window_dict: 0'
+ if !exists('w:window_dict')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing window curly-brace variable.
+ let str = "window"
+ let w:curly_{str}_var = 1
+ echo 'w:curly_' . str . '_var: 1'
+ if exists('w:curly_{str}_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing window curly-brace variable.
+ unlet w:curly_{str}_var
+ echo 'w:curly_' . str . '_var: 0'
+ if !exists('w:curly_{str}_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing buffer variable.
+ echo 'b:buffer_var: 1'
+ let b:buffer_var = 1
+ if exists('b:buffer_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing buffer variable.
+ unlet b:buffer_var
+ echo 'b:buffer_var: 0'
+ if !exists('b:buffer_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing buffer list.
+ let b:buffer_list = ["blue", "orange"]
+ echo 'b:buffer_list: 1'
+ if exists('b:buffer_list')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing buffer list.
+ unlet b:buffer_list
+ echo 'b:buffer_list: 0'
+ if !exists('b:buffer_list')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing buffer dictionary.
+ let b:buffer_dict = {"xcord":100, "ycord":2}
+ echo 'b:buffer_dict: 1'
+ if exists('b:buffer_dict')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing buffer dictionary.
+ unlet b:buffer_dict
+ echo 'b:buffer_dict: 0'
+ if !exists('b:buffer_dict')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Existing buffer curly-brace variable.
+ let str = "buffer"
+ let b:curly_{str}_var = 1
+ echo 'b:curly_' . str . '_var: 1'
+ if exists('b:curly_{str}_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing buffer curly-brace variable.
+ unlet b:curly_{str}_var
+ echo 'b:curly_' . str . '_var: 0'
+ if !exists('b:curly_{str}_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Script-local tests.
+ source test60.vim
+ " Existing Vim internal variable.
+ echo 'v:version: 1'
+ if exists('v:version')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Non-existing Vim internal variable.
+ echo 'v:non_exists_var: 0'
+ if !exists('v:non_exists_var')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ " Function arguments.
+ function TestFuncArg(func_arg, ...)
+ echo 'a:func_arg: 1'
+ if exists('a:func_arg')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ echo 'a:non_exists_arg: 0'
+ if !exists('a:non_exists_arg')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ echo 'a:1: 1'
+ if exists('a:1')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ echo 'a:2: 0'
+ if !exists('a:2')
+ echo "OK"
+ else
+ echo "FAILED"
+ endif
+ endfunction
+ call TestFuncArg("arg1", "arg2")
+ echo ' g:footest#x =' g:footest#x
+ echo ' footest#F()' footest#F()
+ echo 'UndefFun()' UndefFun()
+ redir END
+ endfunction
+
+ call TestExists()
+
+ function TestHas()
+ redir >> test.out
+ for pl in ['6.9.999', '7.1.999', '7.4.123', '9.1.0', '9.9.1']
+ echo 'has patch ' . pl . ': ' . has('patch-' . pl)
+ endfor
+ redir END
+ endfunc
+ call TestHas()
+
+ edit! test.out
+ set ff=unix
+ ]=])
+
+ -- Assert buffer contents.
+ expect([=[
+
+ #myagroup: 1
+ OK
+ #myagroup+b: 0
+ OK
+ #myagroup#BufEnter: 1
+ OK
+ #myagroup#BufEnter#*.my: 1
+ OK
+ #BufEnter: 1
+ OK
+ #BufEnter#*.my: 1
+ OK
+ #xyzagroup: 0
+ OK
+ #xyzagroup#BufEnter: 0
+ OK
+ #myagroup#CmdwinEnter: 0
+ OK
+ #myagroup#xyzacmd: 0
+ OK
+ #myagroup#BufEnter#xyzpat: 0
+ OK
+ #BufEnter#xyzpat: 0
+ OK
+ ###: 0
+ OK
+ ##: 0
+ OK
+ ##FileReadCmd: 1
+ OK
+ ##MySpecialCmd: 0
+ OK
+ &textwidth: 1
+ OK
+ &tw: 1
+ OK
+ &tw-: 0
+ OK
+ &g:errorformat: 1
+ OK
+ &l:errorformat: 1
+ OK
+ &nojoinspaces: 0
+ OK
+ &nojs: 0
+ OK
+ &myxyzoption: 0
+ OK
+ +incsearch: 1
+ OK
+ +incsearch!1: 0
+ OK
+ +is: 1
+ OK
+ +mouseshape: 0
+ OK
+ $EDITOR_NAME: 1
+ OK
+ $NON_ENV_VAR: 0
+ OK
+ *bufnr: 1
+ OK
+ *bufnr(): 1
+ OK
+ *myxyzfunc: 0
+ OK
+ *bufnr&6: 0
+ OK
+ *TestExists: 1
+ OK
+ *MyxyzFunc: 0
+ OK
+ *UndefFun: 0
+ OK
+ *footest#F: 0
+ OK
+ :edit: 2
+ OK
+ :edit/a: 0
+ OK
+ :q: 1
+ OK
+ :invalidcmd: 0
+ OK
+ :MyCmd: 2
+ OK
+ :My: 3
+ OK
+ :rightbelow: 2
+ OK
+ :MyCmd: 0
+ OK
+ :My: 0
+ OK
+ local_var: 1
+ OK
+ local_var%n: 0
+ OK
+ local_var: 0
+ OK
+ footest#x: 0
+ OK
+ local_list: 1
+ OK
+ local_list[1]: 1
+ OK
+ local_list[1]+5: 0
+ OK
+ local_list[2]: 0
+ OK
+ local_list: 0
+ OK
+ local_dict: 1
+ OK
+ local_dict: 0
+ OK
+ curly_local_var: 1
+ OK
+ curly_local_var: 0
+ OK
+ g:global_var: 1
+ OK
+ g:global_var-n: 1
+ OK
+ g:global_var: 0
+ OK
+ g:global_list: 1
+ OK
+ g:global_list: 0
+ OK
+ g:global_dict: 1
+ OK
+ g:global_dict: 0
+ OK
+ g:curly_global_var: 1
+ OK
+ g:curly_global_var: 0
+ OK
+ w:window_var: 1
+ OK
+ w:window_var: 0
+ OK
+ w:window_list: 1
+ OK
+ w:window_list: 0
+ OK
+ w:window_dict: 1
+ OK
+ w:window_dict: 0
+ OK
+ w:curly_window_var: 1
+ OK
+ w:curly_window_var: 0
+ OK
+ b:buffer_var: 1
+ OK
+ b:buffer_var: 0
+ OK
+ b:buffer_list: 1
+ OK
+ b:buffer_list: 0
+ OK
+ b:buffer_dict: 1
+ OK
+ b:buffer_dict: 0
+ OK
+ b:curly_buffer_var: 1
+ OK
+ b:curly_buffer_var: 0
+ OK
+ s:script_var: 1
+ OK
+ s:script_var: 0
+ OK
+ s:script_list: 1
+ OK
+ s:script_list: 0
+ OK
+ s:script_dict: 1
+ OK
+ s:script_dict: 0
+ OK
+ s:curly_script_var: 1
+ OK
+ s:curly_script_var: 0
+ OK
+ *s:my_script_func: 1
+ OK
+ *s:my_script_func: 0
+ OK
+ v:version: 1
+ OK
+ v:non_exists_var: 0
+ OK
+ a:func_arg: 1
+ OK
+ a:non_exists_arg: 0
+ OK
+ a:1: 1
+ OK
+ a:2: 0
+ OK
+ g:footest#x = 1
+ footest#F() 0
+ UndefFun() 0
+ has patch 6.9.999: 1
+ has patch 7.1.999: 1
+ has patch 7.4.123: 1
+ has patch 9.1.0: 0
+ has patch 9.9.1: 0]=])
+
+ end)
+ teardown(function()
+ os.remove('test.out')
+ os.remove('test60.vim')
+ end)
+end)