mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			149 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			6.1 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 'openbsd' == helpers.uname() 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)
 | |
| 
 | |
|   it("set display-=msgsep before first redraw", function()
 | |
|     startup('--cmd', 'set display-=msgsep')
 | |
|     screen:expect{grid=[[
 | |
|       ^                                                            |
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|       {3:~                                                           }|
 | |
|                                                                   |
 | |
|     ]]}
 | |
|   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)
 | 
