mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 09:44:31 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local helpers = require('test.functional.helpers')(after_each)
 | 
						|
local screen = require('test.functional.ui.screen')
 | 
						|
 | 
						|
local curbufmeths = helpers.curbufmeths
 | 
						|
local curwinmeths = helpers.curwinmeths
 | 
						|
local testprg = helpers.testprg
 | 
						|
local command = helpers.command
 | 
						|
local funcs = helpers.funcs
 | 
						|
local meths = helpers.meths
 | 
						|
local clear = helpers.clear
 | 
						|
local eq = helpers.eq
 | 
						|
local matches = helpers.matches
 | 
						|
local pesc = helpers.pesc
 | 
						|
 | 
						|
describe(':edit term://*', function()
 | 
						|
  local get_screen = function(columns, lines)
 | 
						|
    local scr = screen.new(columns, lines)
 | 
						|
    scr:attach({rgb=false})
 | 
						|
    return scr
 | 
						|
  end
 | 
						|
 | 
						|
  before_each(function()
 | 
						|
    clear()
 | 
						|
    meths.set_option_value('shell', testprg('shell-test'), {})
 | 
						|
    meths.set_option_value('shellcmdflag', 'EXE', {})
 | 
						|
  end)
 | 
						|
 | 
						|
  it('runs TermOpen event', function()
 | 
						|
    meths.set_var('termopen_runs', {})
 | 
						|
    command('autocmd TermOpen * :call add(g:termopen_runs, expand("<amatch>"))')
 | 
						|
    command('edit term://')
 | 
						|
    local termopen_runs = meths.get_var('termopen_runs')
 | 
						|
    eq(1, #termopen_runs)
 | 
						|
    local cwd = funcs.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 = get_screen(columns, lines)
 | 
						|
    local rep = 97
 | 
						|
    meths.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 = curwinmeths.get_height()
 | 
						|
    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, curbufmeths.get_lines(0, -1, true))
 | 
						|
  end)
 | 
						|
end)
 |