neovim/test/functional/legacy/091_context_variables_spec.lua
dundargoc 052498ed42 test: improve test conventions
Specifically, functions that are run in the context of the test runner
are put in module `test/testutil.lua` while the functions that are run
in the context of the test session are put in
`test/functional/testnvim.lua`.

Closes https://github.com/neovim/neovim/issues/27004.
2024-04-23 18:17:04 +02:00

191 lines
4.9 KiB
Lua

-- Tests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar().
local n = require('test.functional.testnvim')()
local insert, source = n.insert, n.source
local clear, expect = n.clear, n.expect
describe('context variables', function()
setup(clear)
it('is working', function()
insert('start:')
-- Test for getbufvar().
-- Use strings to test for memory leaks.
source([[
function Getbufscope(buf, ...)
let ret = call('getbufvar', [a:buf, ''] + a:000)
if type(ret) == type({})
return filter(copy(ret), 'v:key isnot# "changedtick"')
else
return ret
endif
endfunction
let t:testvar='abcd'
$put =string(gettabvar(1, 'testvar'))
$put =string(gettabvar(1, 'testvar'))
let b:var_num = '1234'
let def_num = '5678'
$put =string(getbufvar(1, 'var_num'))
$put =string(getbufvar(1, 'var_num', def_num))
$put =string(Getbufscope(1))
$put =string(Getbufscope(1, def_num))
unlet b:var_num
$put =string(getbufvar(1, 'var_num', def_num))
$put =string(Getbufscope(1))
$put =string(Getbufscope(1, def_num))
$put =string(Getbufscope(9))
$put =string(Getbufscope(9, def_num))
unlet def_num
$put =string(getbufvar(1, '&autoindent'))
$put =string(getbufvar(1, '&autoindent', 1))
]])
-- Open new window with forced option values.
source([[
set fileformats=unix,dos
new ++ff=dos ++bin ++enc=iso-8859-2
let otherff = getbufvar(bufnr('%'), '&fileformat')
let otherbin = getbufvar(bufnr('%'), '&bin')
let otherfenc = getbufvar(bufnr('%'), '&fenc')
close
$put =otherff
$put =string(otherbin)
$put =otherfenc
unlet otherff otherbin otherfenc
]])
-- Test for getwinvar().
source([[
let w:var_str = "Dance"
let def_str = "Chance"
$put =string(getwinvar(1, 'var_str'))
$put =string(getwinvar(1, 'var_str', def_str))
$put =string(getwinvar(1, ''))
$put =string(getwinvar(1, '', def_str))
unlet w:var_str
$put =string(getwinvar(1, 'var_str', def_str))
$put =string(getwinvar(1, ''))
$put =string(getwinvar(1, '', def_str))
$put =string(getwinvar(9, ''))
$put =string(getwinvar(9, '', def_str))
$put =string(getwinvar(1, '&nu'))
$put =string(getwinvar(1, '&nu', 1))
unlet def_str
]])
-- Test for gettabvar().
source([[
tabnew
tabnew
let t:var_list = [1, 2, 3]
let t:other = 777
let def_list = [4, 5, 6, 7]
tabrewind
$put =string(gettabvar(3, 'var_list'))
$put =string(gettabvar(3, 'var_list', def_list))
$put =string(gettabvar(3, ''))
$put =string(gettabvar(3, '', def_list))
tablast
unlet t:var_list
tabrewind
$put =string(gettabvar(3, 'var_list', def_list))
$put =string(gettabvar(9, ''))
$put =string(gettabvar(9, '', def_list))
$put =string(gettabvar(3, '&nu'))
$put =string(gettabvar(3, '&nu', def_list))
unlet def_list
tabonly
]])
-- Test for gettabwinvar().
source([[
tabnew
tabnew
tabprev
split
split
wincmd w
vert split
wincmd w
let w:var_dict = {'dict': 'tabwin'}
let def_dict = {'dict2': 'newval'}
wincmd b
tabrewind
$put =string(gettabwinvar(2, 3, 'var_dict'))
$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
$put =string(gettabwinvar(2, 3, ''))
$put =string(gettabwinvar(2, 3, '', def_dict))
tabnext
3wincmd w
unlet w:var_dict
tabrewind
$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
$put =string(gettabwinvar(2, 3, ''))
$put =string(gettabwinvar(2, 3, '', def_dict))
$put =string(gettabwinvar(2, 9, ''))
$put =string(gettabwinvar(2, 9, '', def_dict))
$put =string(gettabwinvar(9, 3, ''))
$put =string(gettabwinvar(9, 3, '', def_dict))
unlet def_dict
$put =string(gettabwinvar(2, 3, '&nux'))
$put =string(gettabwinvar(2, 3, '&nux', 1))
tabonly
]])
-- Assert buffer contents.
expect([[
start:
'abcd'
'abcd'
'1234'
'1234'
{'var_num': '1234'}
{'var_num': '1234'}
'5678'
{}
{}
''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
{'var_list': [1, 2, 3], 'other': 777}
{'var_list': [1, 2, 3], 'other': 777}
[4, 5, 6, 7]
''
[4, 5, 6, 7]
''
[4, 5, 6, 7]
{'dict': 'tabwin'}
{'dict': 'tabwin'}
{'var_dict': {'dict': 'tabwin'}}
{'var_dict': {'dict': 'tabwin'}}
{'dict2': 'newval'}
{}
{}
''
{'dict2': 'newval'}
''
{'dict2': 'newval'}
''
1]])
end)
end)