diff options
author | Marco Hinz <mh.codebro@gmail.com> | 2017-01-11 18:09:30 +0100 |
---|---|---|
committer | Marco Hinz <mh.codebro@gmail.com> | 2017-01-13 15:29:05 +0100 |
commit | a2f8adad4c09b1af24c964695bf0b0eada3ddc42 (patch) | |
tree | 755c924ae5726dcc759ad562e74128529706a6e4 | |
parent | 197f50bf9ab5c1c8ba4925e3e556830a9b7fd826 (diff) | |
download | rneovim-a2f8adad4c09b1af24c964695bf0b0eada3ddc42.tar.gz rneovim-a2f8adad4c09b1af24c964695bf0b0eada3ddc42.tar.bz2 rneovim-a2f8adad4c09b1af24c964695bf0b0eada3ddc42.zip |
Add autocmd/dirchanged_spec.lua
-rw-r--r-- | test/functional/autocmd/dirchanged_spec.lua | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/test/functional/autocmd/dirchanged_spec.lua b/test/functional/autocmd/dirchanged_spec.lua new file mode 100644 index 0000000000..30a460bc4c --- /dev/null +++ b/test/functional/autocmd/dirchanged_spec.lua @@ -0,0 +1,88 @@ +local lfs = require('lfs') +local h = require('test.functional.helpers')(after_each) + +local clear = h.clear +local command = h.command +local eq = h.eq +local eval = h.eval +local request = h.request + +describe('DirChanged ->', function() + local curdir = lfs.currentdir() + local dirs = { + curdir .. '/Xtest-functional-autocmd-dirchanged.dir1', + curdir .. '/Xtest-functional-autocmd-dirchanged.dir2', + curdir .. '/Xtest-functional-autocmd-dirchanged.dir3', + } + + setup(function() for _, dir in pairs(dirs) do h.mkdir(dir) end end) + teardown(function() for _, dir in pairs(dirs) do h.rmdir(dir) end end) + + before_each(function() + clear() + command('autocmd DirChanged * let g:event = copy(v:event)') + end) + + it('"autocmd DirChanged *" sets v:event for all :cd variants', function() + command('lcd '..dirs[1]) + eq({cwd=dirs[1], scope='window'}, eval('g:event')) + + command('tcd '..dirs[2]) + eq({cwd=dirs[2], scope='tab'}, eval('g:event')) + + command('cd '..dirs[3]) + eq({cwd=dirs[3], scope='global'}, eval('g:event')) + end) + + it('"autocmd DirChanged *" does not trigger for failing :cd variants', function() + command('let g:event = {}') + + local status1, err1 = pcall(function() + command('lcd '..dirs[1] .. '/doesnotexist') + end) + eq({}, eval('g:event')) + + local status2, err2 = pcall(function() + command('lcd '..dirs[2] .. '/doesnotexist') + end) + eq({}, eval('g:event')) + + local status3, err3 = pcall(function() + command('lcd '..dirs[3] .. '/doesnotexist') + end) + eq({}, eval('g:event')) + + eq(false, status1) + eq(false, status2) + eq(false, status3) + + eq('E344', string.match(err1, 'Vim.*:(.*):')) + eq('E344', string.match(err2, 'Vim.*:(.*):')) + eq('E344', string.match(err3, 'Vim.*:(.*):')) + end) + + it("'autochdir' triggers DirChanged", function() + command('set autochdir') + + command('split '..dirs[1]..'/foo') + eq({cwd=dirs[1], scope='window'}, eval('g:event')) + + command('split '..dirs[2]..'/bar') + eq({cwd=dirs[2], scope='window'}, eval('g:event')) + end) + + it('nvim_set_current_dir() triggers DirChanged', function() + request('nvim_set_current_dir', dirs[1]) + eq({cwd=dirs[1], scope='global'}, eval('g:event')) + + request('nvim_set_current_dir', dirs[2]) + eq({cwd=dirs[2], scope='global'}, eval('g:event')) + + local status, err = pcall(function() + request('nvim_set_current_dir', '/doesnotexist') + end) + eq(false, status) + eq('Failed to change directory', string.match(err, ': (.*)')) + eq({cwd=dirs[2], scope='global'}, eval('g:event')) + end) +end) |