mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 09:44:31 +00:00 
			
		
		
		
	Extend the capabilities of is_os to detect more platforms such as
freebsd and openbsd. Also remove `iswin()` helper function as it can be
replaced by `is_os("win")`.
		
	
		
			
				
	
	
		
			135 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local uv = require'luv'
 | 
						|
 | 
						|
local helpers = require('test.functional.helpers')(after_each)
 | 
						|
local Screen = require('test.functional.ui.screen')
 | 
						|
 | 
						|
local feed = helpers.feed
 | 
						|
local eq = helpers.eq
 | 
						|
local clear = helpers.clear
 | 
						|
 | 
						|
local function test_embed(ext_linegrid)
 | 
						|
  local screen
 | 
						|
  local function startup(...)
 | 
						|
    clear{args_rm={'--headless'}, args={...}}
 | 
						|
 | 
						|
    -- attach immediately after startup, for early UI
 | 
						|
    screen = Screen.new(60, 8)
 | 
						|
    screen:attach{ext_linegrid=ext_linegrid}
 | 
						|
    screen:set_default_attr_ids({
 | 
						|
      [1] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red},
 | 
						|
      [2] = {bold = true, foreground = Screen.colors.SeaGreen4},
 | 
						|
      [3] = {bold = true, foreground = Screen.colors.Blue1},
 | 
						|
      [4] = {bold = true, foreground = Screen.colors.Green},
 | 
						|
      [5] = {bold = true, reverse = true},
 | 
						|
    })
 | 
						|
  end
 | 
						|
 | 
						|
  it('can display errors', function()
 | 
						|
    startup('--cmd', 'echoerr invalid+')
 | 
						|
    screen:expect([[
 | 
						|
                                                                  |
 | 
						|
                                                                  |
 | 
						|
                                                                  |
 | 
						|
                                                                  |
 | 
						|
                                                                  |
 | 
						|
      Error detected while processing pre-vimrc command line:     |
 | 
						|
      E121: Undefined variable: invalid                           |
 | 
						|
      Press ENTER or type command to continue^                     |
 | 
						|
    ]])
 | 
						|
 | 
						|
    feed('<cr>')
 | 
						|
    screen:expect([[
 | 
						|
      ^                                                            |
 | 
						|
      {3:~                                                           }|
 | 
						|
      {3:~                                                           }|
 | 
						|
      {3:~                                                           }|
 | 
						|
      {3:~                                                           }|
 | 
						|
      {3:~                                                           }|
 | 
						|
      {3:~                                                           }|
 | 
						|
                                                                  |
 | 
						|
    ]])
 | 
						|
  end)
 | 
						|
 | 
						|
  it("doesn't erase output when setting color scheme", function()
 | 
						|
    if helpers.is_os('openbsd') then
 | 
						|
      pending('FIXME #10804')
 | 
						|
    end
 | 
						|
    startup('--cmd', 'echoerr "foo"', '--cmd', 'color default', '--cmd', 'echoerr "bar"')
 | 
						|
    screen:expect([[
 | 
						|
                                                                  |
 | 
						|
                                                                  |
 | 
						|
                                                                  |
 | 
						|
      {5:                                                            }|
 | 
						|
      Error detected while processing pre-vimrc command line:     |
 | 
						|
      foo                                                         |
 | 
						|
      {1:bar}                                                         |
 | 
						|
      {4:Press ENTER or type command to continue}^                     |
 | 
						|
    ]])
 | 
						|
  end)
 | 
						|
 | 
						|
  it("doesn't erase output when setting Normal colors", function()
 | 
						|
    startup('--cmd', 'echoerr "foo"', '--cmd', 'hi Normal guibg=Green', '--cmd', 'echoerr "bar"')
 | 
						|
    screen:expect{grid=[[
 | 
						|
                                                                  |
 | 
						|
                                                                  |
 | 
						|
                                                                  |
 | 
						|
                                                                  |
 | 
						|
      Error detected while processing pre-vimrc command line:     |
 | 
						|
      foo                                                         |
 | 
						|
      bar                                                         |
 | 
						|
      Press ENTER or type command to continue^                     |
 | 
						|
    ]], condition=function()
 | 
						|
      eq(Screen.colors.Green, screen.default_colors.rgb_bg)
 | 
						|
    end}
 | 
						|
  end)
 | 
						|
end
 | 
						|
 | 
						|
describe('--embed UI on startup (ext_linegrid=true)', function() test_embed(true) end)
 | 
						|
describe('--embed UI on startup (ext_linegrid=false)', function() test_embed(false) end)
 | 
						|
 | 
						|
describe('--embed UI', function()
 | 
						|
  it('can pass stdin', function()
 | 
						|
    local pipe = assert(uv.pipe())
 | 
						|
 | 
						|
    local writer = assert(uv.new_pipe(false))
 | 
						|
    writer:open(pipe.write)
 | 
						|
 | 
						|
    clear {args_rm={'--headless'}, io_extra=pipe.read}
 | 
						|
 | 
						|
    -- attach immediately after startup, for early UI
 | 
						|
    local screen = Screen.new(40, 8)
 | 
						|
    screen:attach {stdin_fd=3}
 | 
						|
    screen:set_default_attr_ids {
 | 
						|
      [1] = {bold = true, foreground = Screen.colors.Blue1};
 | 
						|
      [2] = {bold = true};
 | 
						|
    }
 | 
						|
 | 
						|
    writer:write "hello nvim\nfrom external input\n"
 | 
						|
    writer:shutdown(function() writer:close() end)
 | 
						|
 | 
						|
    screen:expect{grid=[[
 | 
						|
      ^hello nvim                              |
 | 
						|
      from external input                     |
 | 
						|
      {1:~                                       }|
 | 
						|
      {1:~                                       }|
 | 
						|
      {1:~                                       }|
 | 
						|
      {1:~                                       }|
 | 
						|
      {1:~                                       }|
 | 
						|
                                              |
 | 
						|
    ]]}
 | 
						|
 | 
						|
    -- stdin (rpc input) still works
 | 
						|
    feed 'o'
 | 
						|
    screen:expect{grid=[[
 | 
						|
      hello nvim                              |
 | 
						|
      ^                                        |
 | 
						|
      from external input                     |
 | 
						|
      {1:~                                       }|
 | 
						|
      {1:~                                       }|
 | 
						|
      {1:~                                       }|
 | 
						|
      {1:~                                       }|
 | 
						|
      {2:-- INSERT --}                            |
 | 
						|
    ]]}
 | 
						|
  end)
 | 
						|
end)
 |