neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

buffers_spec.lua (3385B)


      1 -- shada buffer list saving/reading support
      2 local t = require('test.testutil')
      3 local n = require('test.functional.testnvim')()
      4 local t_shada = require('test.functional.shada.testutil')
      5 
      6 local nvim_command, fn, eq, api = n.command, n.fn, t.eq, n.api
      7 local expect_exit = n.expect_exit
      8 
      9 local reset, clear = t_shada.reset, t_shada.clear
     10 
     11 describe('shada support code', function()
     12  local testfilename = 'Xtestfile-functional-shada-buffers'
     13  local testfilename_2 = 'Xtestfile-functional-shada-buffers-2'
     14  after_each(clear)
     15 
     16  it('is able to dump and restore buffer list', function()
     17    reset('set shada+=%')
     18    nvim_command('edit ' .. testfilename)
     19    nvim_command('edit ' .. testfilename_2)
     20    expect_exit(nvim_command, 'qall')
     21    reset('set shada+=%')
     22    eq(3, fn.bufnr('$'))
     23    eq('', fn.bufname(1))
     24    eq(testfilename, fn.bufname(2))
     25    eq(testfilename_2, fn.bufname(3))
     26  end)
     27 
     28  it('does not restore buffer list without % in &shada', function()
     29    reset('set shada+=%')
     30    nvim_command('edit ' .. testfilename)
     31    nvim_command('edit ' .. testfilename_2)
     32    expect_exit(nvim_command, 'qall')
     33    reset()
     34    eq(1, fn.bufnr('$'))
     35    eq('', fn.bufname(1))
     36  end)
     37 
     38  it('does not dump buffer list without % in &shada', function()
     39    reset()
     40    nvim_command('edit ' .. testfilename)
     41    nvim_command('edit ' .. testfilename_2)
     42    expect_exit(nvim_command, 'qall')
     43    reset('set shada+=%')
     44    eq(1, fn.bufnr('$'))
     45    eq('', fn.bufname(1))
     46  end)
     47 
     48  it('does not dump unlisted buffer', function()
     49    reset('set shada+=%')
     50    nvim_command('edit ' .. testfilename)
     51    nvim_command('edit ' .. testfilename_2)
     52    api.nvim_set_option_value('buflisted', false, {})
     53    expect_exit(nvim_command, 'qall')
     54    reset('set shada+=%')
     55    eq(2, fn.bufnr('$'))
     56    eq('', fn.bufname(1))
     57    eq(testfilename, fn.bufname(2))
     58  end)
     59 
     60  it('does not dump quickfix buffer', function()
     61    reset('set shada+=%')
     62    nvim_command('edit ' .. testfilename)
     63    nvim_command('edit ' .. testfilename_2)
     64    api.nvim_set_option_value('buftype', 'quickfix', {})
     65    expect_exit(nvim_command, 'qall')
     66    reset('set shada+=%')
     67    eq(2, fn.bufnr('$'))
     68    eq('', fn.bufname(1))
     69    eq(testfilename, fn.bufname(2))
     70  end)
     71 
     72  it('does not dump unnamed buffers', function()
     73    reset('set shada+=% hidden')
     74    api.nvim_buf_set_lines(0, 0, 1, true, { 'foo' })
     75    nvim_command('enew')
     76    api.nvim_buf_set_lines(0, 0, 1, true, { 'bar' })
     77    eq(2, fn.bufnr('$'))
     78    expect_exit(nvim_command, 'qall!')
     79    reset('set shada+=% hidden')
     80    eq(1, fn.bufnr('$'))
     81    eq('', fn.bufname(1))
     82  end)
     83 
     84  it('restores 1 buffer with %1 in &shada, #5759', function()
     85    reset('set shada+=%1')
     86    nvim_command('edit ' .. testfilename)
     87    nvim_command('edit ' .. testfilename_2)
     88    expect_exit(nvim_command, 'qall')
     89    reset('set shada+=%1')
     90    eq(2, fn.bufnr('$'))
     91    eq('', fn.bufname(1))
     92    eq(testfilename, fn.bufname(2))
     93  end)
     94 
     95  it("does not add 'nobuflisted' buffers to v:oldfiles", function()
     96    reset("set shada='100")
     97    nvim_command('edit ' .. testfilename)
     98    nvim_command('setlocal nobuflisted')
     99    nvim_command('edit ' .. testfilename_2)
    100    nvim_command('setlocal buflisted')
    101    expect_exit(nvim_command, 'qall')
    102    reset("set shada='100")
    103    local oldfiles = api.nvim_get_vvar('oldfiles')
    104    eq(1, #oldfiles)
    105    t.matches(vim.pesc(testfilename_2), oldfiles[1])
    106  end)
    107 end)