mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	test(tui): add test for overriding argv[0] (#24293)
This commit is contained in:
		| @@ -30,6 +30,7 @@ local spawn_argv = helpers.spawn_argv | |||||||
| local set_session = helpers.set_session | local set_session = helpers.set_session | ||||||
| local feed = helpers.feed | local feed = helpers.feed | ||||||
| local eval = helpers.eval | local eval = helpers.eval | ||||||
|  | local write_file = helpers.write_file | ||||||
|  |  | ||||||
| if helpers.skip(helpers.is_os('win')) then return end | if helpers.skip(helpers.is_os('win')) then return end | ||||||
|  |  | ||||||
| @@ -1620,9 +1621,6 @@ end) | |||||||
|  |  | ||||||
| describe('TUI', function() | describe('TUI', function() | ||||||
|   before_each(clear) |   before_each(clear) | ||||||
|   after_each(function() |  | ||||||
|     os.remove('testF') |  | ||||||
|   end) |  | ||||||
|  |  | ||||||
|   it('resize at startup #17285 #15044 #11330', function() |   it('resize at startup #17285 #15044 #11330', function() | ||||||
|     local screen = Screen.new(50, 10) |     local screen = Screen.new(50, 10) | ||||||
| @@ -1653,7 +1651,46 @@ describe('TUI', function() | |||||||
|     ]]) |     ]]) | ||||||
|   end) |   end) | ||||||
|  |  | ||||||
|  |   it('argv[0] can be overridden #23953', function() | ||||||
|  |     if not exec_lua('return pcall(require, "ffi")') then | ||||||
|  |       pending('missing LuaJIT FFI') | ||||||
|  |     end | ||||||
|  |     local script_file = 'Xargv0.lua' | ||||||
|  |     write_file(script_file, [=[ | ||||||
|  |       local ffi = require('ffi') | ||||||
|  |       ffi.cdef([[int execl(const char *, const char *, ...);]]) | ||||||
|  |       ffi.C.execl(vim.v.progpath, 'Xargv0nvim', '--clean') | ||||||
|  |     ]=]) | ||||||
|  |     finally(function() | ||||||
|  |       os.remove(script_file) | ||||||
|  |     end) | ||||||
|  |     local screen = thelpers.screen_setup(0, string.format([=[["%s", "--clean", "-l", "%s"]]=], | ||||||
|  |                                                           nvim_prog, script_file)) | ||||||
|  |     screen:expect{grid=[[ | ||||||
|  |       {1: }                                                 | | ||||||
|  |       {4:~                                                 }| | ||||||
|  |       {4:~                                                 }| | ||||||
|  |       {4:~                                                 }| | ||||||
|  |       {5:[No Name]                       0,0-1          All}| | ||||||
|  |                                                         | | ||||||
|  |       {3:-- TERMINAL --}                                    | | ||||||
|  |     ]]} | ||||||
|  |     feed_data(':put =v:argv + [v:progname]\n') | ||||||
|  |     screen:expect{grid=[[ | ||||||
|  |       Xargv0nvim                                        | | ||||||
|  |       --embed                                           | | ||||||
|  |       --clean                                           | | ||||||
|  |       {1:X}argv0nvim                                        | | ||||||
|  |       {5:[No Name] [+]                   5,1            Bot}| | ||||||
|  |       4 more lines                                      | | ||||||
|  |       {3:-- TERMINAL --}                                    | | ||||||
|  |     ]]} | ||||||
|  |   end) | ||||||
|  |  | ||||||
|   it('with non-tty (pipe) stdout/stderr', function() |   it('with non-tty (pipe) stdout/stderr', function() | ||||||
|  |     finally(function() | ||||||
|  |       os.remove('testF') | ||||||
|  |     end) | ||||||
|     local screen = thelpers.screen_setup(0, '"'..nvim_prog |     local screen = thelpers.screen_setup(0, '"'..nvim_prog | ||||||
|       ..' -u NONE -i NONE --cmd \'set noswapfile noshowcmd noruler\' --cmd \'normal iabc\' > /dev/null 2>&1 && cat testF && rm testF"') |       ..' -u NONE -i NONE --cmd \'set noswapfile noshowcmd noruler\' --cmd \'normal iabc\' > /dev/null 2>&1 && cat testF && rm testF"') | ||||||
|     feed_data(':w testF\n:q\n') |     feed_data(':w testF\n:q\n') | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 zeertzjq
					zeertzjq