012_directory_spec.lua (2378B)
1 -- Tests for 'directory' option. 2 -- - ".", in same dir as file 3 -- - "./dir", in directory relative to file 4 -- - "dir", in directory relative to current dir 5 6 local t = require('test.testutil') 7 local n = require('test.functional.testnvim')() 8 9 local eq = t.eq 10 local neq = t.neq 11 local poke_eventloop = n.poke_eventloop 12 local fn = n.fn 13 local api = n.api 14 local clear = n.clear 15 local insert = n.insert 16 local command = n.command 17 local write_file = t.write_file 18 local mkdir = t.mkdir 19 20 local function ls_dir_sorted(dirname) 21 local files = {} 22 for f in vim.fs.dir(dirname) do 23 if f ~= '.' and f ~= '..' then 24 table.insert(files, f) 25 end 26 end 27 table.sort(files) 28 return files 29 end 30 31 describe("'directory' option", function() 32 setup(function() 33 local text = [[ 34 start of testfile 35 line 2 Abcdefghij 36 line 3 Abcdefghij 37 end of testfile 38 ]] 39 write_file('Xtest1', text) 40 mkdir('Xtest.je') 41 mkdir('Xtest2') 42 write_file('Xtest2/Xtest3', text) 43 clear() 44 end) 45 teardown(function() 46 command('%bwipe!') 47 api.nvim_set_option_value('swapfile', false, {}) 48 api.nvim_set_option_value('directory', '.', {}) 49 n.rmdir('Xtest.je') 50 n.rmdir('Xtest2') 51 os.remove('Xtest1') 52 end) 53 54 it('is working', function() 55 insert([[ 56 start of testfile 57 line 2 Abcdefghij 58 line 3 Abcdefghij 59 end of testfile]]) 60 61 api.nvim_set_option_value('swapfile', true, {}) 62 api.nvim_set_option_value('directory', '.', {}) 63 64 -- sanity check: files should not exist yet. 65 eq(nil, vim.uv.fs_stat('.Xtest1.swp')) 66 67 command('edit! Xtest1') 68 poke_eventloop() 69 eq('Xtest1', fn.buffer_name('%')) 70 -- Verify that the swapfile exists. In the legacy test this was done by 71 -- reading the output from :!ls. 72 neq(nil, vim.uv.fs_stat('.Xtest1.swp')) 73 74 api.nvim_set_option_value('directory', './Xtest2,.', {}) 75 command('edit Xtest1') 76 poke_eventloop() 77 78 -- swapfile should no longer exist in CWD. 79 eq(nil, vim.uv.fs_stat('.Xtest1.swp')) 80 81 eq({ 'Xtest1.swp', 'Xtest3' }, ls_dir_sorted('Xtest2')) 82 83 api.nvim_set_option_value('directory', 'Xtest.je', {}) 84 command('bdelete') 85 command('edit Xtest2/Xtest3') 86 eq(true, api.nvim_get_option_value('swapfile', {})) 87 poke_eventloop() 88 89 eq({ 'Xtest3' }, ls_dir_sorted('Xtest2')) 90 eq({ 'Xtest3.swp' }, ls_dir_sorted('Xtest.je')) 91 end) 92 end)