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)