diff options
author | Gregory Anders <greg@gpanders.com> | 2023-12-05 14:26:46 -0800 |
---|---|---|
committer | Gregory Anders <greg@gpanders.com> | 2023-12-06 10:38:44 -0800 |
commit | a5a346678a8211ea07f318de42e557ad3909f65e (patch) | |
tree | 7582752e1e60dbe8accd0e22ecedd2d814fe525f | |
parent | 2613ba5000d4c0d9b15e2eec2d2b97615575925e (diff) | |
download | rneovim-a5a346678a8211ea07f318de42e557ad3909f65e.tar.gz rneovim-a5a346678a8211ea07f318de42e557ad3909f65e.tar.bz2 rneovim-a5a346678a8211ea07f318de42e557ad3909f65e.zip |
test: set notermguicolors in tests
Set 'notermguicolors' in tests which spawn a child Nvim process to force
existing tests to use 16 colors. Also refactor the child process
invocation to make things a little bit less messy.
-rw-r--r-- | test/functional/autocmd/focus_spec.lua | 11 | ||||
-rw-r--r-- | test/functional/core/main_spec.lua | 2 | ||||
-rw-r--r-- | test/functional/helpers.lua | 3 | ||||
-rw-r--r-- | test/functional/terminal/api_spec.lua | 8 | ||||
-rw-r--r-- | test/functional/terminal/buffer_spec.lua | 12 | ||||
-rw-r--r-- | test/functional/terminal/cursor_spec.lua | 29 | ||||
-rw-r--r-- | test/functional/terminal/helpers.lua | 24 | ||||
-rw-r--r-- | test/functional/terminal/tui_spec.lua | 225 | ||||
-rw-r--r-- | test/functional/ui/output_spec.lua | 8 |
9 files changed, 198 insertions, 124 deletions
diff --git a/test/functional/autocmd/focus_spec.lua b/test/functional/autocmd/focus_spec.lua index c72842f14b..204bfcaa12 100644 --- a/test/functional/autocmd/focus_spec.lua +++ b/test/functional/autocmd/focus_spec.lua @@ -2,7 +2,6 @@ local helpers = require('test.functional.helpers')(after_each) local thelpers = require('test.functional.terminal.helpers') local luv = require('luv') local clear = helpers.clear -local nvim_prog = helpers.nvim_prog local feed_command = helpers.feed_command local feed_data = thelpers.feed_data @@ -14,10 +13,12 @@ describe('autoread TUI FocusGained/FocusLost', function() before_each(function() clear() - screen = thelpers.screen_setup( - 0, - '["'..nvim_prog..'", "-u", "NONE", "-i", "NONE", "--cmd", "colorscheme vim", "--cmd", "set noswapfile noshowcmd noruler"]' - ) + screen = thelpers.setup_child_nvim({ + '-u', 'NONE', + '-i', 'NONE', + '--cmd', 'colorscheme vim', + '--cmd', 'set noswapfile noshowcmd noruler notermguicolors', + }) end) teardown(function() diff --git a/test/functional/core/main_spec.lua b/test/functional/core/main_spec.lua index d705d56575..c8d800f89a 100644 --- a/test/functional/core/main_spec.lua +++ b/test/functional/core/main_spec.lua @@ -62,7 +62,7 @@ describe('command-line option', function() screen:attach() local args = { nvim_prog_abs(), '-u', 'NONE', '-i', 'NONE', - '--cmd', '"set noswapfile shortmess+=IFW fileformats=unix"', + '--cmd', '"set noswapfile shortmess+=IFW fileformats=unix notermguicolors"', '-s', '-' } diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua index 2bff1d16f8..93eadb64ca 100644 --- a/test/functional/helpers.lua +++ b/test/functional/helpers.lua @@ -30,7 +30,8 @@ module.nvim_prog = ( module.nvim_set = ( 'set shortmess+=IS background=light noswapfile noautoindent startofline' ..' laststatus=1 undodir=. directory=. viewdir=. backupdir=.' - ..' belloff= wildoptions-=pum joinspaces noshowcmd noruler nomore redrawdebug=invalid') + ..' belloff= wildoptions-=pum joinspaces noshowcmd noruler nomore redrawdebug=invalid' + ..' notermguicolors') module.nvim_argv = { module.nvim_prog, '-u', 'NONE', '-i', 'NONE', -- XXX: find treesitter parsers. diff --git a/test/functional/terminal/api_spec.lua b/test/functional/terminal/api_spec.lua index c278b2ad0e..68082ba4fa 100644 --- a/test/functional/terminal/api_spec.lua +++ b/test/functional/terminal/api_spec.lua @@ -11,8 +11,12 @@ describe('api', function() before_each(function() helpers.clear() os.remove(socket_name) - screen = child_session.screen_setup(0, '["'..helpers.nvim_prog - ..'", "-u", "NONE", "-i", "NONE", "--cmd", "colorscheme vim", "--cmd", "'..helpers.nvim_set..'"]') + screen = child_session.setup_child_nvim({ + '-u', 'NONE', + '-i', 'NONE', + '--cmd', 'colorscheme vim', + '--cmd', helpers.nvim_set, + }) end) after_each(function() os.remove(socket_name) diff --git a/test/functional/terminal/buffer_spec.lua b/test/functional/terminal/buffer_spec.lua index 423e7bdf21..b92f1b1592 100644 --- a/test/functional/terminal/buffer_spec.lua +++ b/test/functional/terminal/buffer_spec.lua @@ -17,7 +17,6 @@ local sleep = helpers.sleep local funcs = helpers.funcs local is_os = helpers.is_os local skip = helpers.skip -local nvim_prog = helpers.nvim_prog describe(':terminal buffer', function() local screen @@ -446,10 +445,13 @@ end) describe('terminal input', function() it('sends various special keys with modifiers', function() clear() - local screen = thelpers.screen_setup( - 0, - string.format([=[["%s", "-u", "NONE", "-i", "NONE", "--cmd", 'colorscheme vim', "--cmd", "startinsert"]]=], nvim_prog) - ) + local screen = thelpers.setup_child_nvim({ + '-u', 'NONE', + '-i', 'NONE', + '--cmd', 'colorscheme vim', + '--cmd', 'set notermguicolors', + '--cmd', 'startinsert', + }) screen:expect{grid=[[ {1: } | {4:~ }| diff --git a/test/functional/terminal/cursor_spec.lua b/test/functional/terminal/cursor_spec.lua index 95081b7189..37bb0ee817 100644 --- a/test/functional/terminal/cursor_spec.lua +++ b/test/functional/terminal/cursor_spec.lua @@ -3,7 +3,6 @@ local Screen = require('test.functional.ui.screen') local thelpers = require('test.functional.terminal.helpers') local feed, clear, nvim = helpers.feed, helpers.clear, helpers.nvim local testprg, command = helpers.testprg, helpers.command -local nvim_prog = helpers.nvim_prog local eq, eval = helpers.eq, helpers.eval local matches = helpers.matches local poke_eventloop = helpers.poke_eventloop @@ -184,10 +183,18 @@ describe('buffer cursor position is correct in terminal without number column', local screen local function setup_ex_register(str) - screen = thelpers.screen_setup(0, '["'..nvim_prog - ..[[", "-u", "NONE", "-i", "NONE", "-E", "--cmd", "let @r = ']]..str..[['", ]] + screen = thelpers.setup_child_nvim({ + '-u', 'NONE', + '-i', 'NONE', + '-E', + '--cmd', string.format('let @r = "%s"', str), -- <Left> and <Right> don't always work - ..[["--cmd", "cnoremap <C-X> <Left>", "--cmd", "cnoremap <C-O> <Right>"]]..']', 70) + '--cmd', 'cnoremap <C-X> <Left>', + '--cmd', 'cnoremap <C-O> <Right>', + '--cmd', 'set notermguicolors', + }, { + cols = 70, + }) screen:set_default_attr_ids({ [1] = {foreground = 253, background = 11}; [3] = {bold = true}, @@ -570,10 +577,18 @@ describe('buffer cursor position is correct in terminal with number column', fun local screen local function setup_ex_register(str) - screen = thelpers.screen_setup(0, '["'..nvim_prog - ..[[", "-u", "NONE", "-i", "NONE", "-E", "--cmd", "let @r = ']]..str..[['", ]] + screen = thelpers.setup_child_nvim({ + '-u', 'NONE', + '-i', 'NONE', + '-E', + '--cmd', string.format('let @r = "%s"', str), -- <Left> and <Right> don't always work - ..[["--cmd", "cnoremap <C-X> <Left>", "--cmd", "cnoremap <C-O> <Right>"]]..']', 70) + '--cmd', 'cnoremap <C-X> <Left>', + '--cmd', 'cnoremap <C-O> <Right>', + '--cmd', 'set notermguicolors', + }, { + cols = 70, + }) screen:set_default_attr_ids({ [1] = {foreground = 253, background = 11}; [3] = {bold = true}, diff --git a/test/functional/terminal/helpers.lua b/test/functional/terminal/helpers.lua index 62d3dd67a3..4ae054daa8 100644 --- a/test/functional/terminal/helpers.lua +++ b/test/functional/terminal/helpers.lua @@ -6,6 +6,7 @@ local Screen = require('test.functional.ui.screen') local testprg = helpers.testprg local exec_lua = helpers.exec_lua local nvim = helpers.nvim +local nvim_prog = helpers.nvim_prog local function feed_data(data) if type(data) == 'table' then @@ -122,6 +123,26 @@ local function screen_setup(extra_rows, command, cols, opts) return screen end +local function setup_child_nvim(args, opts) + opts = opts or {} + + local argv = { nvim_prog, unpack(args) } + local cmd = string.format('[%s]', vim.iter(argv):map(function(s) + return string.format('\'%s\'', s) + end):join(', ')) + + if opts.env then + local s = {} + for k, v in pairs(opts.env) do + table.insert(s, string.format('%s: \'%s\'', k, v)) + end + + cmd = string.format('%s, #{env: #{%s}}', cmd, table.concat(s, ', ')) + end + + return screen_setup(0, cmd, opts.cols) +end + return { feed_data = feed_data, feed_termcode = feed_termcode, @@ -141,5 +162,6 @@ return { clear_attrs = clear_attrs, enable_mouse = enable_mouse, disable_mouse = disable_mouse, - screen_setup = screen_setup + screen_setup = screen_setup, + setup_child_nvim = setup_child_nvim, } diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua index 3748f820d4..0c984069b3 100644 --- a/test/functional/terminal/tui_spec.lua +++ b/test/functional/terminal/tui_spec.lua @@ -39,13 +39,13 @@ describe('TUI', function() before_each(function() clear() local child_server = new_pipename() - screen = thelpers.screen_setup(0, - string.format( - [=[["%s", "--listen", "%s", "-u", "NONE", "-i", "NONE", "--cmd", "%s laststatus=2 background=dark", "--cmd", "colorscheme vim"]]=], - nvim_prog, - child_server, - nvim_set - )) + screen = thelpers.setup_child_nvim({ + '--listen', child_server, + '-u', 'NONE', + '-i', 'NONE', + '--cmd', string.format('%s laststatus=2 background=dark', nvim_set), + '--cmd', 'colorscheme vim' + }) screen:expect([[ {1: } | {4:~ }| @@ -1830,7 +1830,7 @@ describe('TUI', function() }) screen:attach() exec([[ - call termopen([v:progpath, '--clean', '--cmd', 'colorscheme vim', '--cmd', 'let start = reltime() | while v:true | if reltimefloat(reltime(start)) > 2 | break | endif | endwhile']) + call termopen([v:progpath, '--clean', '--cmd', 'set notermguicolors', '--cmd', 'colorscheme vim', '--cmd', 'let start = reltime() | while v:true | if reltimefloat(reltime(start)) > 2 | break | endif | endwhile']) sleep 500m vs new ]]) @@ -1856,30 +1856,29 @@ describe('TUI', function() write_file(script_file, [=[ local ffi = require('ffi') ffi.cdef([[int execl(const char *, const char *, ...);]]) - ffi.C.execl(vim.v.progpath, 'Xargv0nvim', '--clean', '--cmd', 'colorscheme vim') + 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)) + local screen = thelpers.setup_child_nvim({'--clean', '-l', script_file}) screen:expect{grid=[[ {1: } | - {4:~ }| - {4:~ }| - {4:~ }| - {5:[No Name] 0,0-1 All}| + ~ | + ~ | + ~ | + [No Name] 0,0-1 All| | {3:-- TERMINAL --} | ]]} feed_data(':put =v:argv + [v:progname]\n') screen:expect{grid=[[ + Xargv0nvim | + --embed | --clean | - --cmd | - colorscheme vim | {1:X}argv0nvim | - {5:[No Name] [+] 7,1 Bot}| - 6 more lines | + [No Name] [+] 5,1 Bot| + 4 more lines | {3:-- TERMINAL --} | ]]} end) @@ -1903,11 +1902,13 @@ describe('TUI', function() end) it('<C-h> #10134', function() - local screen = thelpers.screen_setup( - 0, - '["'..nvim_prog..[[", "-u", "NONE", "-i", "NONE", "--cmd", "colorscheme vim", ]] - ..[["--cmd", "set noruler", "--cmd", ':nnoremap <C-h> :echomsg "\<C-h\>"<CR>']]..']' - ) + local screen = thelpers.setup_child_nvim({ + '-u', 'NONE', + '-i', 'NONE', + '--cmd', 'colorscheme vim', + '--cmd', 'set noruler notermguicolors', + '--cmd', ':nnoremap <C-h> :echomsg "\\<C-h\\>"<CR>', + }) screen:expect{grid=[[ {1: } | {4:~ }| @@ -1931,12 +1932,13 @@ describe('TUI', function() end) it('draws line with many trailing spaces correctly #24955', function() - local screen = thelpers.screen_setup( - 0, - '["'..nvim_prog..[[", "-u", "NONE", "-i", "NONE", "--cmd", "colorscheme vim"]] - ..[[, "--cmd", "call setline(1, ['1st line' .. repeat(' ', 153), '2nd line'])"]]..']', - 80 - ) + local screen = thelpers.setup_child_nvim({ + '-u', 'NONE', + '-i', 'NONE', + '--cmd', 'set notermguicolors', + '--cmd', 'colorscheme vim', + '--cmd', 'call setline(1, ["1st line" .. repeat(" ", 153), "2nd line"])', + }, { cols = 80 }) screen:expect{grid=[[ {1:1}st line | | @@ -1962,16 +1964,16 @@ end) describe('TUI UIEnter/UILeave', function() it('fires exactly once, after VimEnter', function() clear() - local screen = thelpers.screen_setup(0, - '["'..nvim_prog..'", "-u", "NONE", "-i", "NONE"' - ..[[, "--cmd", "colorscheme vim"]] - ..[[, "--cmd", "set noswapfile noshowcmd noruler"]] - ..[[, "--cmd", "let g:evs = []"]] - ..[[, "--cmd", "autocmd UIEnter * :call add(g:evs, 'UIEnter')"]] - ..[[, "--cmd", "autocmd UILeave * :call add(g:evs, 'UILeave')"]] - ..[[, "--cmd", "autocmd VimEnter * :call add(g:evs, 'VimEnter')"]] - ..']' - ) + local screen = thelpers.setup_child_nvim({ + '-u', 'NONE', + '-i', 'NONE', + '--cmd', 'colorscheme vim', + '--cmd', 'set noswapfile noshowcmd noruler notermguicolors', + '--cmd', 'let g:evs = []', + '--cmd', 'autocmd UIEnter * :call add(g:evs, "UIEnter")', + '--cmd', 'autocmd UILeave * :call add(g:evs, "UILeave")', + '--cmd', 'autocmd VimEnter * :call add(g:evs, "VimEnter")', + }) screen:expect{grid=[[ {1: } | {4:~ }| @@ -2001,11 +2003,14 @@ describe('TUI FocusGained/FocusLost', function() before_each(function() clear() local child_server = new_pipename() - screen = thelpers.screen_setup(0, - string.format( - '["%s", "--listen", "%s", "-u", "NONE", "-i", "NONE", "--cmd", "colorscheme vim", ' - ..'"--cmd", "set noswapfile noshowcmd noruler"]', - nvim_prog, child_server)) + screen = thelpers.setup_child_nvim({ + '--listen', child_server, + '-u', 'NONE', + '-i', 'NONE', + '--cmd', 'colorscheme vim', + '--cmd', 'set noswapfile noshowcmd noruler notermguicolors', + }) + screen:expect([[ {1: } | {4:~ }| @@ -2208,14 +2213,18 @@ describe("TUI 't_Co' (terminal colors)", function() local function assert_term_colors(term, colorterm, maxcolors) clear({env={TERM=term}, args={}}) - -- This is ugly because :term/termopen() forces TERM=xterm-256color. - -- TODO: Revisit this after jobstart/termopen accept `env` dict. - screen = thelpers.screen_setup(0, string.format( - [=[['sh', '-c', 'LANG=C TERM=%s %s %s -u NONE -i NONE --cmd "colorscheme vim" --cmd "%s"']]=], - term or "", - (colorterm ~= nil and "COLORTERM="..colorterm or ""), - nvim_prog, - nvim_set)) + screen = thelpers.setup_child_nvim({ + '-u', 'NONE', + '-i', 'NONE', + '--cmd', 'colorscheme vim', + '--cmd', nvim_set, + }, { + env = { + LANG = 'C', + TERM = term or '', + COLORTERM = colorterm or '', + }, + }) local tline if maxcolors == 8 then @@ -2483,14 +2492,16 @@ describe("TUI 'term' option", function() local function assert_term(term_envvar, term_expected) clear() - -- This is ugly because :term/termopen() forces TERM=xterm-256color. - -- TODO: Revisit this after jobstart/termopen accept `env` dict. - local cmd = string.format( - [=[['sh', '-c', 'LANG=C TERM=%s %s -u NONE -i NONE --cmd "%s"']]=], - term_envvar or "", - nvim_prog, - nvim_set) - screen = thelpers.screen_setup(0, cmd) + screen = thelpers.setup_child_nvim({ + '-u', 'NONE', + '-i', 'NONE', + '--cmd', nvim_set, + }, { + env = { + LANG = 'C', + TERM = term_envvar or '', + }, + }) local full_timeout = screen.timeout screen.timeout = 250 -- We want screen:expect() to fail quickly. @@ -2540,14 +2551,17 @@ describe("TUI", function() -- Runs (child) `nvim` in a TTY (:terminal), to start the builtin TUI. local function nvim_tui(extra_args) clear() - -- This is ugly because :term/termopen() forces TERM=xterm-256color. - -- TODO: Revisit this after jobstart/termopen accept `env` dict. - local cmd = string.format( - [=[['sh', '-c', 'LANG=C %s -u NONE -i NONE %s --cmd "colorscheme vim" --cmd "%s"']]=], - nvim_prog, - extra_args or "", - nvim_set) - screen = thelpers.screen_setup(0, cmd) + screen = thelpers.setup_child_nvim({ + '-u', 'NONE', + '-i', 'NONE', + '--cmd', 'colorscheme vim', + '--cmd', nvim_set, + extra_args, + }, { + env = { + LANG = 'C', + }, + }) end it('-V3log logs terminfo values', function() @@ -2604,9 +2618,18 @@ describe('TUI bg color', function() local function setup_bg_test() clear() - screen = thelpers.screen_setup(0, '["'..nvim_prog - ..'", "-u", "NONE", "-i", "NONE", "--cmd", "colorscheme vim", "--cmd", "set noswapfile", ' - ..'"-c", "autocmd OptionSet background echo \\"did OptionSet, yay!\\""]') + screen = thelpers.setup_child_nvim({ + '-u', + 'NONE', + '-i', + 'NONE', + '--cmd', + 'colorscheme vim', + '--cmd', + 'set noswapfile notermguicolors', + '-c', + 'autocmd OptionSet background echo "did OptionSet, yay!"', + }) end before_each(setup_bg_test) @@ -2725,14 +2748,13 @@ describe("TUI as a client", function() set_session(server_super) local server_pipe = new_pipename() - local screen_server = thelpers.screen_setup(0, - string.format( - '["%s", "--listen", "%s", "-u", "NONE", "-i", "NONE", "--cmd", "colorscheme vim", ' - ..'"--cmd", "%s laststatus=2 background=dark"]', - nvim_prog, - server_pipe, - nvim_set - )) + local screen_server = thelpers.setup_child_nvim({ + '--listen', server_pipe, + '-u', 'NONE', + '-i', 'NONE', + '--cmd', 'colorscheme vim', + '--cmd', string.format('%s laststatus=2 background=dark', nvim_set), + }) feed_data("iHello, World") screen_server:expect{grid=[[ @@ -2756,9 +2778,10 @@ describe("TUI as a client", function() ]]} set_session(client_super) - local screen_client = thelpers.screen_setup(0, - string.format([=[["%s", "--server", "%s", "--remote-ui"]]=], - nvim_prog, server_pipe)) + local screen_client = thelpers.setup_child_nvim({ + '--server', server_pipe, + '--remote-ui', + }) screen_client:expect{grid=[[ Hello, Worl{1:d} | @@ -2798,9 +2821,10 @@ describe("TUI as a client", function() server:request('nvim_input', 'iHalloj!<Esc>') set_session(client_super) - local screen_client = thelpers.screen_setup(0, - string.format([=[["%s", "--server", "%s", "--remote-ui"]]=], - nvim_prog, server_pipe)) + local screen_client = thelpers.setup_child_nvim({ + '--server', server_pipe, + '--remote-ui', + }) screen_client:expect{grid=[[ Halloj{1:!} | @@ -2836,9 +2860,10 @@ describe("TUI as a client", function() it("throws error when no server exists", function() clear() - local screen = thelpers.screen_setup(0, - string.format([=[["%s", "--server", "127.0.0.1:2436546", "--remote-ui"]]=], - nvim_prog), 60) + local screen = thelpers.setup_child_nvim({ + '--server', '127.0.0.1:2436546', + '--remote-ui', + }, { cols = 60 }) screen:expect([[ Remote ui failed to start: {MATCH:.*}| @@ -2857,14 +2882,13 @@ describe("TUI as a client", function() set_session(server_super) local server_pipe = new_pipename() - local screen_server = thelpers.screen_setup(0, - string.format( - '["%s", "--listen", "%s", "-u", "NONE", "-i", "NONE", "--cmd", "colorscheme vim", ' - ..'"--cmd", "%s laststatus=2 background=dark"]', - nvim_prog, - server_pipe, - nvim_set - )) + local screen_server = thelpers.setup_child_nvim({ + '--listen', server_pipe, + '-u', 'NONE', + '-i', 'NONE', + '--cmd', 'colorscheme vim', + '--cmd', string.format('%s laststatus=2 background=dark', nvim_set), + }) screen_server:expect{grid=[[ {1: } | {4:~ }| @@ -2897,9 +2921,10 @@ describe("TUI as a client", function() ]]} set_session(client_super) - local screen_client = thelpers.screen_setup(0, - string.format([=[["%s", "--server", "%s", "--remote-ui"]]=], - nvim_prog, server_pipe)) + local screen_client = thelpers.setup_child_nvim({ + '--server', server_pipe, + '--remote-ui', + }) screen_client:expect{grid=[[ Hello, Worl{1:d} | diff --git a/test/functional/ui/output_spec.lua b/test/functional/ui/output_spec.lua index 1dbbe76bac..719634aa2f 100644 --- a/test/functional/ui/output_spec.lua +++ b/test/functional/ui/output_spec.lua @@ -21,8 +21,12 @@ describe("shell command :!", function() local screen before_each(function() clear() - screen = child_session.screen_setup(0, '["'..helpers.nvim_prog.. - '", "-u", "NONE", "-i", "NONE", "--cmd", "colorscheme vim", "--cmd", "'..helpers.nvim_set..'"]') + screen = child_session.setup_child_nvim({ + '-u', 'NONE', + '-i', 'NONE', + '--cmd', 'colorscheme vim', + '--cmd', helpers.nvim_set, + }) screen:expect([[ {1: } | {4:~ }| |