diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2015-03-25 09:14:47 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2015-03-25 18:57:36 -0300 |
commit | 2aa2513b8e023a0d7bd2071299f0ea59a4d4ce25 (patch) | |
tree | b684785ba9c769491e6ebdac8e21495cf22dbdd3 /test/functional/terminal/buffer_spec.lua | |
parent | 710002c820e5a55e3b234074fefb84ab745e11a3 (diff) | |
download | rneovim-2aa2513b8e023a0d7bd2071299f0ea59a4d4ce25.tar.gz rneovim-2aa2513b8e023a0d7bd2071299f0ea59a4d4ce25.tar.bz2 rneovim-2aa2513b8e023a0d7bd2071299f0ea59a4d4ce25.zip |
test: Add terminal tests
- Modify tty-test to allow easier control over the terminal
- Add a new directory with various terminal tests/specifications
- Remove a pending job/pty test.
- Flush stdout in Screen:snapshot_util() (avoid waiting for the test to finish)
- Replace libuv sigwinch watcher by a sigaction handler. libuv randomly fails to
deliver signals on OSX. Might be related to the problem fixed by
@bbcddc55ee1e5605657592644be0102ed3a5f104 (under the hoods, libuv uses a pipe
to deliver signals to the main thread, which might be blocking in some
situations)
Diffstat (limited to 'test/functional/terminal/buffer_spec.lua')
-rw-r--r-- | test/functional/terminal/buffer_spec.lua | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/test/functional/terminal/buffer_spec.lua b/test/functional/terminal/buffer_spec.lua new file mode 100644 index 0000000000..857679c4b3 --- /dev/null +++ b/test/functional/terminal/buffer_spec.lua @@ -0,0 +1,159 @@ +local helpers = require('test.functional.helpers') +local Screen = require('test.functional.ui.screen') +local thelpers = require('test.functional.terminal.helpers') +local feed, clear, nvim = helpers.feed, helpers.clear, helpers.nvim +local wait, execute, eq = helpers.wait, helpers.execute, helpers.eq + + +describe('terminal buffer', function() + local screen + + before_each(function() + clear() + execute('set modifiable swapfile undolevels=20') + wait() + screen = thelpers.screen_setup() + end) + + describe('when a new file is edited', function() + before_each(function() + feed('<c-\\><c-n>:set bufhidden=wipe<cr>:enew<cr>') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + ~ | + ~ | + :enew | + ]]) + end) + + it('will hide the buffer, ignoring the bufhidden option', function() + feed(':bnext:l<esc>') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + ~ | + ~ | + | + ]]) + end) + end) + + describe('swap and undo', function() + before_each(function() + feed('<c-\\><c-n>') + screen:expect([[ + tty ready | + {2: } | + | + | + | + ^ | + | + ]]) + end) + + it('does not create swap files', function() + local swapfile = nvim('command_output', 'swapname'):gsub('\n', '') + eq(nil, io.open(swapfile)) + end) + + it('does not create undofiles files', function() + local undofile = nvim('eval', 'undofile(bufname("%"))') + eq(nil, io.open(undofile)) + end) + end) + + it('cannot be modified directly', function() + feed('<c-\\><c-n>dd') + screen:expect([[ + tty ready | + {2: } | + | + | + | + ^ | + E21: Cannot make changes, 'modifiable' is off | + ]]) + end) + + it('sends data to the terminal when the "put" operator is used', function() + feed('<c-\\><c-n>gg"ayj') + execute('let @a = "appended " . @a') + feed('"ap"ap') + screen:expect([[ + ^tty ready | + appended tty ready | + appended tty ready | + {2: } | + | + | + :let @a = "appended " . @a | + ]]) + -- operator count is also taken into consideration + feed('3"ap') + screen:expect([[ + ^tty ready | + appended tty ready | + appended tty ready | + appended tty ready | + appended tty ready | + appended tty ready | + :let @a = "appended " . @a | + ]]) + end) + + it('sends data to the terminal when the ":put" command is used', function() + feed('<c-\\><c-n>gg"ayj') + execute('let @a = "appended " . @a') + execute('put a') + screen:expect([[ + ^tty ready | + appended tty ready | + {2: } | + | + | + | + :put a | + ]]) + -- line argument is only used to move the cursor + execute('6put a') + screen:expect([[ + tty ready | + appended tty ready | + appended tty ready | + {2: } | + | + ^ | + :6put a | + ]]) + end) + + it('can be deleted', function() + feed('<c-\\><c-n>:bd!<cr>') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + ~ | + ~ | + :bd! | + ]]) + execute('bnext') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + ~ | + ~ | + :bnext | + ]]) + end) +end) + |