diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2023-11-30 20:35:25 +0000 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2023-11-30 20:35:25 +0000 |
commit | 1b7b916b7631ddf73c38e3a0070d64e4636cb2f3 (patch) | |
tree | cd08258054db80bb9a11b1061bb091c70b76926a /test/functional/terminal/scrollback_spec.lua | |
parent | eaa89c11d0f8aefbb512de769c6c82f61a8baca3 (diff) | |
parent | 4a8bf24ac690004aedf5540fa440e788459e5e34 (diff) | |
download | rneovim-1b7b916b7631ddf73c38e3a0070d64e4636cb2f3.tar.gz rneovim-1b7b916b7631ddf73c38e3a0070d64e4636cb2f3.tar.bz2 rneovim-1b7b916b7631ddf73c38e3a0070d64e4636cb2f3.zip |
Merge remote-tracking branch 'upstream/master' into aucmd_textputpostaucmd_textputpost
Diffstat (limited to 'test/functional/terminal/scrollback_spec.lua')
-rw-r--r-- | test/functional/terminal/scrollback_spec.lua | 75 |
1 files changed, 34 insertions, 41 deletions
diff --git a/test/functional/terminal/scrollback_spec.lua b/test/functional/terminal/scrollback_spec.lua index a4899c8219..1e278e4cff 100644 --- a/test/functional/terminal/scrollback_spec.lua +++ b/test/functional/terminal/scrollback_spec.lua @@ -2,13 +2,12 @@ local Screen = require('test.functional.ui.screen') local helpers = require('test.functional.helpers')(after_each) local thelpers = require('test.functional.terminal.helpers') local clear, eq, curbuf = helpers.clear, helpers.eq, helpers.curbuf -local feed, testprg, feed_command = helpers.feed, helpers.testprg, helpers.feed_command +local feed, testprg = helpers.feed, helpers.testprg local eval = helpers.eval local command = helpers.command -local matches = helpers.matches local poke_eventloop = helpers.poke_eventloop local retry = helpers.retry -local curbufmeths = helpers.curbufmeths +local meths = helpers.meths local nvim = helpers.nvim local feed_data = thelpers.feed_data local pcall_err = helpers.pcall_err @@ -140,7 +139,6 @@ describe(':terminal scrollback', function() describe('and height decreased by 1', function() - if skip(is_os('win')) then return end local function will_hide_top_line() feed([[<C-\><C-N>]]) screen:try_resize(screen._width - 2, screen._height - 1) @@ -347,12 +345,10 @@ end) describe(':terminal prints more lines than the screen height and exits', function() it('will push extra lines to scrollback', function() - skip(is_os('win')) clear() local screen = Screen.new(30, 7) screen:attach({rgb=false}) - feed_command(("call termopen(['%s', '10']) | startinsert"):format(testprg('tty-test'))) - poke_eventloop() + command(("call termopen(['%s', '10']) | startinsert"):format(testprg('tty-test'))) screen:expect([[ line6 | line7 | @@ -382,9 +378,7 @@ describe("'scrollback' option", function() end) local function set_fake_shell() - -- shell-test.c is a fake shell that prints its arguments and exits. - nvim('set_option', 'shell', testprg('shell-test')) - nvim('set_option', 'shellcmdflag', 'EXE') + nvim('set_option_value', 'shell', string.format('"%s" INTERACT', testprg('shell-test')), {}) end local function expect_lines(expected, epsilon) @@ -403,7 +397,7 @@ describe("'scrollback' option", function() screen = thelpers.screen_setup(nil, "['sh']", 30) end - curbufmeths.set_option('scrollback', 0) + meths.set_option_value('scrollback', 0, {}) feed_data(('%s REP 31 line%s'):format(testprg('shell-test'), is_os('win') and '\r' or '\n')) screen:expect{any='30: line '} retry(nil, nil, function() expect_lines(7) end) @@ -419,7 +413,7 @@ describe("'scrollback' option", function() screen = thelpers.screen_setup(nil, "['sh']", 30) end - curbufmeths.set_option('scrollback', 200) + meths.set_option_value('scrollback', 200, {}) -- Wait for prompt. screen:expect{any='%$'} @@ -428,10 +422,10 @@ describe("'scrollback' option", function() screen:expect{any='30: line '} retry(nil, nil, function() expect_lines(33, 2) end) - curbufmeths.set_option('scrollback', 10) + meths.set_option_value('scrollback', 10, {}) poke_eventloop() retry(nil, nil, function() expect_lines(16) end) - curbufmeths.set_option('scrollback', 10000) + meths.set_option_value('scrollback', 10000, {}) retry(nil, nil, function() expect_lines(16) end) -- Terminal job data is received asynchronously, may happen before the -- 'scrollback' option is synchronized with the internal sb_buffer. @@ -462,8 +456,8 @@ describe("'scrollback' option", function() expect_lines(58) -- Verify off-screen state - matches((is_os('win') and '^36: line[ ]*$' or '^35: line[ ]*$'), eval("getline(line('w0') - 1)")) - matches((is_os('win') and '^27: line[ ]*$' or '^26: line[ ]*$'), eval("getline(line('w0') - 10)")) + eq((is_os('win') and '36: line' or '35: line'), eval("getline(line('w0') - 1)->trim(' ', 2)")) + eq((is_os('win') and '27: line' or '26: line'), eval("getline(line('w0') - 10)->trim(' ', 2)")) end) it('deletes extra lines immediately', function() @@ -486,18 +480,18 @@ describe("'scrollback' option", function() ]]) local term_height = 6 -- Actual terminal screen height, not the scrollback -- Initial - local scrollback = curbufmeths.get_option('scrollback') + local scrollback = meths.get_option_value('scrollback', {}) eq(scrollback + term_height, eval('line("$")')) -- Reduction scrollback = scrollback - 2 - curbufmeths.set_option('scrollback', scrollback) + meths.set_option_value('scrollback', scrollback, {}) eq(scrollback + term_height, eval('line("$")')) end) it('defaults to 10000 in :terminal buffers', function() set_fake_shell() command('terminal') - eq(10000, curbufmeths.get_option('scrollback')) + eq(10000, meths.get_option_value('scrollback', {})) end) it('error if set to invalid value', function() @@ -509,7 +503,7 @@ describe("'scrollback' option", function() it('defaults to -1 on normal buffers', function() command('new') - eq(-1, curbufmeths.get_option('scrollback')) + eq(-1, meths.get_option_value('scrollback', {})) end) it(':setlocal in a :terminal buffer', function() @@ -518,45 +512,45 @@ describe("'scrollback' option", function() -- _Global_ scrollback=-1 defaults :terminal to 10_000. command('setglobal scrollback=-1') command('terminal') - eq(10000, curbufmeths.get_option('scrollback')) + eq(10000, meths.get_option_value('scrollback', {})) -- _Local_ scrollback=-1 in :terminal forces the _maximum_. command('setlocal scrollback=-1') retry(nil, nil, function() -- Fixup happens on refresh, not immediately. - eq(100000, curbufmeths.get_option('scrollback')) + eq(100000, meths.get_option_value('scrollback', {})) end) -- _Local_ scrollback=-1 during TermOpen forces the maximum. #9605 command('setglobal scrollback=-1') command('autocmd TermOpen * setlocal scrollback=-1') command('terminal') - eq(100000, curbufmeths.get_option('scrollback')) + eq(100000, meths.get_option_value('scrollback', {})) end) it(':setlocal in a normal buffer', function() command('new') -- :setlocal to -1. command('setlocal scrollback=-1') - eq(-1, curbufmeths.get_option('scrollback')) + eq(-1, meths.get_option_value('scrollback', {})) -- :setlocal to anything except -1. Currently, this just has no effect. command('setlocal scrollback=42') - eq(42, curbufmeths.get_option('scrollback')) + eq(42, meths.get_option_value('scrollback', {})) end) it(':set updates local value and global default', function() set_fake_shell() command('set scrollback=42') -- set global value - eq(42, curbufmeths.get_option('scrollback')) + eq(42, meths.get_option_value('scrollback', {})) command('terminal') - eq(42, curbufmeths.get_option('scrollback')) -- inherits global default + eq(42, meths.get_option_value('scrollback', {})) -- inherits global default command('setlocal scrollback=99') - eq(99, curbufmeths.get_option('scrollback')) + eq(99, meths.get_option_value('scrollback', {})) command('set scrollback<') -- reset to global default - eq(42, curbufmeths.get_option('scrollback')) + eq(42, meths.get_option_value('scrollback', {})) command('setglobal scrollback=734') -- new global default - eq(42, curbufmeths.get_option('scrollback')) -- local value did not change + eq(42, meths.get_option_value('scrollback', {})) -- local value did not change command('terminal') - eq(734, curbufmeths.get_option('scrollback')) + eq(734, meths.get_option_value('scrollback', {})) end) end) @@ -577,12 +571,12 @@ describe("pending scrollback line handling", function() it("does not crash after setting 'number' #14891", function() exec_lua [[ - local a = vim.api - local buf = a.nvim_create_buf(true, true) - local chan = a.nvim_open_term(buf, {}) - a.nvim_win_set_option(0, "number", true) - a.nvim_chan_send(chan, ("a\n"):rep(11) .. "a") - a.nvim_win_set_buf(0, buf) + local api = vim.api + local buf = api.nvim_create_buf(true, true) + local chan = api.nvim_open_term(buf, {}) + vim.wo.number = true + api.nvim_chan_send(chan, ("a\n"):rep(11) .. "a") + api.nvim_win_set_buf(0, buf) ]] screen:expect [[ {1: 1 }^a | @@ -609,12 +603,11 @@ describe("pending scrollback line handling", function() it("does not crash after nvim_buf_call #14891", function() skip(is_os('win')) exec_lua [[ - local a = vim.api - local bufnr = a.nvim_create_buf(false, true) - a.nvim_buf_call(bufnr, function() + local bufnr = vim.api.nvim_create_buf(false, true) + vim.api.nvim_buf_call(bufnr, function() vim.fn.termopen({"echo", ("hi\n"):rep(11)}) end) - a.nvim_win_set_buf(0, bufnr) + vim.api.nvim_win_set_buf(0, bufnr) vim.cmd("startinsert") ]] screen:expect [[ |