1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- local t = require('test.testutil')
- local n = require('test.functional.testnvim')()
- local Screen = require('test.functional.ui.screen')
- local testprg = n.testprg
- local command = n.command
- local fn = n.fn
- local api = n.api
- local clear = n.clear
- local eq = t.eq
- local matches = t.matches
- local pesc = vim.pesc
- describe(':edit term://*', function()
- before_each(function()
- clear()
- api.nvim_set_option_value('shell', testprg('shell-test'), {})
- api.nvim_set_option_value('shellcmdflag', 'EXE', {})
- end)
- it('runs TermOpen event', function()
- api.nvim_set_var('termopen_runs', {})
- command('autocmd TermOpen * :call add(g:termopen_runs, expand("<amatch>"))')
- command('edit term://')
- local termopen_runs = api.nvim_get_var('termopen_runs')
- eq(1, #termopen_runs)
- local cwd = fn.fnamemodify('.', ':p:~'):gsub([[[\/]*$]], '')
- matches('^term://' .. pesc(cwd) .. '//%d+:$', termopen_runs[1])
- end)
- it("runs TermOpen early enough to set buffer-local 'scrollback'", function()
- local columns, lines = 20, 4
- local scr = Screen.new(columns, lines, { rgb = false })
- local rep = 97
- api.nvim_set_option_value('shellcmdflag', 'REP ' .. rep, {})
- command('set shellxquote=') -- win: avoid extra quotes
- local sb = 10
- command(
- 'autocmd TermOpen * :setlocal scrollback=' .. tostring(sb) .. '|call feedkeys("G", "n")'
- )
- command('edit term://foobar')
- local bufcontents = {}
- local winheight = api.nvim_win_get_height(0)
- local buf_cont_start = rep - sb - winheight + 2
- for i = buf_cont_start, (rep - 1) do
- bufcontents[#bufcontents + 1] = ('%d: foobar'):format(i)
- end
- bufcontents[#bufcontents + 1] = ''
- bufcontents[#bufcontents + 1] = '[Process exited 0]'
- local exp_screen = '\n'
- for i = 1, (winheight - 1) do
- local line = bufcontents[#bufcontents - winheight + i]
- exp_screen = (exp_screen .. line .. (' '):rep(columns - #line) .. '|\n')
- end
- exp_screen = exp_screen .. '^[Process exited 0] |\n'
- exp_screen = exp_screen .. (' '):rep(columns) .. '|\n'
- scr:expect(exp_screen)
- eq(bufcontents, api.nvim_buf_get_lines(0, 0, -1, true))
- end)
- end)
|