diff options
author | Lucas Hoffmann <l-m-h@web.de> | 2015-07-13 11:58:00 +0200 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2017-02-03 23:05:08 +0100 |
commit | bea2e5738db2a696bc79317a280aed95e3a74c50 (patch) | |
tree | f79f74f46206a44a6ae5c6f198164edd6153c507 /test | |
parent | 6239492d9c5041a4d26af4754ee5d84b459807c3 (diff) | |
download | rneovim-bea2e5738db2a696bc79317a280aed95e3a74c50.tar.gz rneovim-bea2e5738db2a696bc79317a280aed95e3a74c50.tar.bz2 rneovim-bea2e5738db2a696bc79317a280aed95e3a74c50.zip |
tests: Migrate legacy test 8. #4179
The test produces some "hit enter" prompts and error messages that had to be
dealt with by `feed`ing CTRL-L to nvim.
Diffstat (limited to 'test')
-rw-r--r-- | test/functional/legacy/008_autocommands_spec.lua | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/test/functional/legacy/008_autocommands_spec.lua b/test/functional/legacy/008_autocommands_spec.lua new file mode 100644 index 0000000000..58f93392f0 --- /dev/null +++ b/test/functional/legacy/008_autocommands_spec.lua @@ -0,0 +1,90 @@ +-- Test for BufWritePre autocommand that deletes or unloads the buffer. +-- Test for BufUnload autocommand that unloads all other buffers. + +local helpers = require('test.functional.helpers')(after_each) +local feed, source = helpers.feed, helpers.source +local clear, execute, expect, eq, eval = helpers.clear, helpers.execute, helpers.expect, helpers.eq, helpers.eval +local write_file, wait, dedent = helpers.write_file, helpers.wait, helpers.dedent +local io = require('io') + +describe('autocommands that delete and unload buffers:', function() + local text1 = dedent([[ + start of Xxx1 + test + end of Xxx]]) + local text2 = text1:gsub('1', '2') + setup(function() + write_file('Xxx1', text1..'\n') + write_file('Xxx2', text2..'\n') + end) + teardown(function() + os.remove('test.out') + os.remove('Xxx1') + os.remove('Xxx2') + end) + before_each(clear) + + it('BufWritePre, BufUnload', function() + execute('au BufWritePre Xxx1 bunload') + execute('au BufWritePre Xxx2 bwipe') + execute('e Xxx2') + eq('Xxx2', eval('bufname("%")')) + execute('e Xxx1') + eq('Xxx1', eval('bufname("%")')) + -- The legacy test file did not check the error message. + execute('let v:errmsg = "no error"') + execute('write') + -- Discard all "hit enter" prompts and messages. + feed('<C-L>') + eq('E203: Autocommands deleted or unloaded buffer to be written', + eval('v:errmsg')) + eq('Xxx2', eval('bufname("%")')) + expect(text2) + -- Start editing Xxx2. + execute('e! Xxx2') + -- The legacy test file did not check the error message. + execute('let v:errmsg = "no error"') + -- Write Xxx2, will delete the buffer and give an error msg. + execute('w') + -- Discard all "hit enter" prompts and messages. + feed('<C-L>') + eq('E203: Autocommands deleted or unloaded buffer to be written', + eval('v:errmsg')) + eq('Xxx1', eval('bufname("%")')) + expect(text1) + end) + it('BufUnload, VimLeave', function() + source([[ + func CloseAll() + let i = 0 + while i <= bufnr('$') + if i != bufnr('%') && bufloaded(i) + exe i . "bunload" + endif + let i += 1 + endwhile + endfunc + func WriteToOut() + edit! test.out + $put ='VimLeave done' + write + endfunc + set shada='100 + au BufUnload * call CloseAll() + au VimLeave * call WriteToOut() + ]]) + execute('e Xxx2') + -- Discard all "hit enter" prompts and messages. + feed('<C-L>') + execute('e Xxx1') + -- Discard all "hit enter" prompts and messages. + feed('<C-L>') + execute('e Makefile') -- an existing file + feed('<C-L>') + execute('sp new2') + feed('<C-L>') + execute('q') + wait() + eq('\nVimLeave done\n', io.open('test.out', 'r'):read('*all')) + end) +end) |