mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	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.
		
			
				
	
	
		
			191 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			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)
 |