diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-02-18 11:07:31 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-18 11:07:31 +0800 |
commit | 44da6a56ba228a97fa917e1ae76a46299b8db125 (patch) | |
tree | 6eb3dde3e96050ef2e63427c5274e9b1dffdad78 | |
parent | bb369a14f3e948c8efa3709d95e4dc2098b2de6a (diff) | |
parent | 9381d08e2916d6114c06336714e416bb834e5566 (diff) | |
download | rneovim-44da6a56ba228a97fa917e1ae76a46299b8db125.tar.gz rneovim-44da6a56ba228a97fa917e1ae76a46299b8db125.tar.bz2 rneovim-44da6a56ba228a97fa917e1ae76a46299b8db125.zip |
Merge pull request #22304 from zeertzjq/test-fix
Fix some mistakes and warnings in tests
-rw-r--r-- | test/functional/editor/mark_spec.lua | 2 | ||||
-rw-r--r-- | test/functional/ex_cmds/trust_spec.lua | 117 | ||||
-rw-r--r-- | test/functional/lua/secure_spec.lua | 11 | ||||
-rw-r--r-- | test/functional/terminal/tui_spec.lua | 63 | ||||
-rw-r--r-- | test/functional/ui/bufhl_spec.lua | 2 | ||||
-rw-r--r-- | test/functional/ui/messages_spec.lua | 4 | ||||
-rw-r--r-- | test/functional/ui/screen.lua | 19 |
7 files changed, 63 insertions, 155 deletions
diff --git a/test/functional/editor/mark_spec.lua b/test/functional/editor/mark_spec.lua index b3b190ef79..0670176719 100644 --- a/test/functional/editor/mark_spec.lua +++ b/test/functional/editor/mark_spec.lua @@ -413,7 +413,7 @@ describe('named marks view', function() 6 line | ^7 line | 8 line | - {MATCH:.*} | + {MATCH:.*marks} | | ]]) end) diff --git a/test/functional/ex_cmds/trust_spec.lua b/test/functional/ex_cmds/trust_spec.lua index 10ee02a790..fe13bd7cd2 100644 --- a/test/functional/ex_cmds/trust_spec.lua +++ b/test/functional/ex_cmds/trust_spec.lua @@ -1,9 +1,10 @@ local helpers = require('test.functional.helpers')(after_each) -local Screen = require('test.functional.ui.screen') local eq = helpers.eq local clear = helpers.clear local command = helpers.command +local exec_capture = helpers.exec_capture +local matches = helpers.matches local pathsep = helpers.get_pathsep() local is_os = helpers.is_os local funcs = helpers.funcs @@ -29,147 +30,49 @@ describe(':trust', function() end) it('trust then deny then remove a file using current buffer', function() - local screen = Screen.new(80, 8) - screen:attach() - screen:set_default_attr_ids({ - [1] = {bold = true, foreground = Screen.colors.Blue1}, - }) - local cwd = funcs.getcwd() local hash = funcs.sha256(helpers.read_file('test_file')) command('edit test_file') - command('trust') - screen:expect([[ - ^test | - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - "]] .. cwd .. pathsep .. [[test_file" trusted.{MATCH:%s+}| - ]]) + matches('^Allowed ".*test_file" in trust database%.$', exec_capture('trust')) local trust = helpers.read_file(funcs.stdpath('state') .. pathsep .. 'trust') eq(string.format('%s %s', hash, cwd .. pathsep .. 'test_file'), vim.trim(trust)) - command('trust ++deny') - screen:expect([[ - ^test | - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - "]] .. cwd .. pathsep .. [[test_file" denied.{MATCH:%s+}| - ]]) + matches('^Denied ".*test_file" in trust database%.$', exec_capture('trust ++deny')) trust = helpers.read_file(funcs.stdpath('state') .. pathsep .. 'trust') eq(string.format('! %s', cwd .. pathsep .. 'test_file'), vim.trim(trust)) - command('trust ++remove') - screen:expect([[ - ^test | - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - "]] .. cwd .. pathsep .. [[test_file" removed.{MATCH:%s+}| - ]]) + matches('^Removed ".*test_file" from trust database%.$', exec_capture('trust ++remove')) trust = helpers.read_file(funcs.stdpath('state') .. pathsep .. 'trust') eq(string.format(''), vim.trim(trust)) end) it('deny then trust then remove a file using current buffer', function() - local screen = Screen.new(80, 8) - screen:attach() - screen:set_default_attr_ids({ - [1] = {bold = true, foreground = Screen.colors.Blue1}, - }) - local cwd = funcs.getcwd() local hash = funcs.sha256(helpers.read_file('test_file')) command('edit test_file') - command('trust ++deny') - screen:expect([[ - ^test | - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - "]] .. cwd .. pathsep .. [[test_file" denied.{MATCH:%s+}| - ]]) + matches('^Denied ".*test_file" in trust database%.$', exec_capture('trust ++deny')) local trust = helpers.read_file(funcs.stdpath('state') .. pathsep .. 'trust') eq(string.format('! %s', cwd .. pathsep .. 'test_file'), vim.trim(trust)) - command('trust') - screen:expect([[ - ^test | - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - "]] .. cwd .. pathsep .. [[test_file" trusted.{MATCH:%s+}| - ]]) + matches('^Allowed ".*test_file" in trust database%.$', exec_capture('trust')) trust = helpers.read_file(funcs.stdpath('state') .. pathsep .. 'trust') eq(string.format('%s %s', hash, cwd .. pathsep .. 'test_file'), vim.trim(trust)) - command('trust ++remove') - screen:expect([[ - ^test | - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - "]] .. cwd .. pathsep .. [[test_file" removed.{MATCH:%s+}| - ]]) + matches('^Removed ".*test_file" from trust database%.$', exec_capture('trust ++remove')) trust = helpers.read_file(funcs.stdpath('state') .. pathsep .. 'trust') eq(string.format(''), vim.trim(trust)) end) it('deny then remove a file using file path', function() - local screen = Screen.new(80, 8) - screen:attach() - screen:set_default_attr_ids({ - [1] = {bold = true, foreground = Screen.colors.Blue1}, - }) - local cwd = funcs.getcwd() - command('trust ++deny test_file') - screen:expect([[ - ^ | - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - "]] .. cwd .. pathsep .. [[test_file" denied.{MATCH:%s+}| - ]]) + matches('^Denied ".*test_file" in trust database%.$', exec_capture('trust ++deny test_file')) local trust = helpers.read_file(funcs.stdpath('state') .. pathsep .. 'trust') eq(string.format('! %s', cwd .. pathsep .. 'test_file'), vim.trim(trust)) - command('trust ++remove test_file') - screen:expect([[ - ^ | - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - {1:~ }| - "]] .. cwd .. pathsep .. [[test_file" removed.{MATCH:%s+}| - ]]) + matches('^Removed ".*test_file" from trust database%.$', exec_capture('trust ++remove test_file')) trust = helpers.read_file(funcs.stdpath('state') .. pathsep .. 'trust') eq(string.format(''), vim.trim(trust)) end) diff --git a/test/functional/lua/secure_spec.lua b/test/functional/lua/secure_spec.lua index 2647b2be46..c4abf70f64 100644 --- a/test/functional/lua/secure_spec.lua +++ b/test/functional/lua/secure_spec.lua @@ -48,6 +48,7 @@ describe('vim.secure', function() [4] = {reverse = true}, }) + --- XXX: screen:expect() may fail if this path is too long. local cwd = funcs.getcwd() -- Need to use feed_command instead of exec_lua because of the confirmation prompt @@ -59,7 +60,7 @@ describe('vim.secure', function() {1:~ }| {2: }| :lua vim.secure.read('Xfile') | - {3:]] .. cwd .. pathsep .. [[Xfile is untrusted}{MATCH:%s+}| + {3:]] .. cwd .. pathsep .. [[Xfile is not trusted.}{MATCH:%s+}| {3:[i]gnore, (v)iew, (d)eny, (a)llow: }^ | ]]} feed('d') @@ -88,7 +89,7 @@ describe('vim.secure', function() {1:~ }| {2: }| :lua vim.secure.read('Xfile') | - {3:]] .. cwd .. pathsep .. [[Xfile is untrusted}{MATCH:%s+}| + {3:]] .. cwd .. pathsep .. [[Xfile is not trusted.}{MATCH:%s+}| {3:[i]gnore, (v)iew, (d)eny, (a)llow: }^ | ]]} feed('a') @@ -118,7 +119,7 @@ describe('vim.secure', function() {1:~ }| {2: }| :lua vim.secure.read('Xfile') | - {3:]] .. cwd .. pathsep .. [[Xfile is untrusted}{MATCH:%s+}| + {3:]] .. cwd .. pathsep .. [[Xfile is not trusted.}{MATCH:%s+}| {3:[i]gnore, (v)iew, (d)eny, (a)llow: }^ | ]]} feed('i') @@ -145,7 +146,7 @@ describe('vim.secure', function() {1:~ }| {2: }| :lua vim.secure.read('Xfile') | - {3:]] .. cwd .. pathsep .. [[Xfile is untrusted}{MATCH:%s+}| + {3:]] .. cwd .. pathsep .. [[Xfile is not trusted.}{MATCH:%s+}| {3:[i]gnore, (v)iew, (d)eny, (a)llow: }^ | ]]} feed('v') @@ -153,7 +154,7 @@ describe('vim.secure', function() ^let g:foobar = 42 | {1:~ }| {1:~ }| - {2:]] .. funcs.fnamemodify(cwd, ':~') .. pathsep .. [[Xfile [RO]{MATCH:%s+}| + {2:]] .. funcs.fnamemodify(cwd, ':~') .. pathsep .. [[Xfile [RO]{MATCH:%s+}}| | {1:~ }| {4:[No Name] }| diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua index 4e62354ed8..792ad63e76 100644 --- a/test/functional/terminal/tui_spec.lua +++ b/test/functional/terminal/tui_spec.lua @@ -109,14 +109,14 @@ describe('TUI', function() end) it('accepts resize while pager is active', function() - child_session:request("nvim_command", [[ + child_session:request("nvim_exec", [[ set more func! ManyErr() for i in range(10) echoerr "FAIL ".i endfor endfunc - ]]) + ]], false) feed_data(':call ManyErr()\r') screen:expect{grid=[[ {8:Error detected while processing function ManyErr:} | @@ -302,11 +302,11 @@ describe('TUI', function() end) it('accepts mouse wheel events #19992', function() - child_session:request('nvim_command', [[ + child_session:request('nvim_exec', [[ set number nostartofline nowrap mousescroll=hor:1,ver:1 call setline(1, repeat([join(range(10), '----')], 10)) vsplit - ]]) + ]], false) screen:expect([[ {11: 1 }{1:0}----1----2----3----4│{11: 1 }0----1----2----3----| {11: 2 }0----1----2----3----4│{11: 2 }0----1----2----3----| @@ -632,11 +632,11 @@ describe('TUI', function() | {3:-- TERMINAL --} | ]]) - child_session:request('nvim_command', [[ + child_session:request('nvim_exec', [[ tab split tabnew highlight Tabline ctermbg=NONE ctermfg=NONE cterm=underline - ]]) + ]], false) screen:expect([[ {12: + [No Name] + [No Name] }{3: [No Name] }{1: }{12:X}| {1: } | @@ -669,7 +669,7 @@ describe('TUI', function() end) it('mouse events work with right-click menu', function() - child_session:request('nvim_command', [[ + child_session:request('nvim_exec', [[ call setline(1, 'popup menu test') set mouse=a mousemodel=popup @@ -679,7 +679,7 @@ describe('TUI', function() menu PopUp.baz :let g:menustr = 'baz'<CR> highlight Pmenu ctermbg=NONE ctermfg=NONE cterm=underline,reverse highlight PmenuSel ctermbg=NONE ctermfg=NONE cterm=underline,reverse,bold - ]]) + ]], false) meths.input_mouse('right', 'press', '', 0, 0, 4) screen:expect([[ {1:p}opup menu test | @@ -1544,7 +1544,7 @@ describe('TUI', function() {2:~ }│{4:~ }| {2:~ }│{5:[No Name] 0,0-1 All}| {2:~ }│ | - {5:new }{MATCH:<.*[/\]nvim }| + {5:new }{1:{MATCH:<.*[/\]nvim }}| | ]]) end) @@ -1626,12 +1626,16 @@ end) describe('TUI FocusGained/FocusLost', function() local screen + local child_session before_each(function() clear() - screen = thelpers.screen_setup(0, '["'..nvim_prog - ..'", "-u", "NONE", "-i", "NONE", "--cmd", "set noswapfile noshowcmd noruler"]') - screen:expect{grid=[[ + local child_server = new_pipename() + screen = thelpers.screen_setup(0, + string.format( + [=[["%s", "--listen", "%s", "-u", "NONE", "-i", "NONE", "--cmd", "set noswapfile noshowcmd noruler"]]=], + nvim_prog, child_server)) + screen:expect([[ {1: } | {4:~ }| {4:~ }| @@ -1639,22 +1643,16 @@ describe('TUI FocusGained/FocusLost', function() {5:[No Name] }| | {3:-- TERMINAL --} | - ]]} - feed_data(":autocmd FocusGained * echo 'gained'\n") - feed_data(":autocmd FocusLost * echo 'lost'\n") + ]]) + child_session = helpers.connect(child_server) + child_session:request('nvim_exec', [[ + autocmd FocusGained * echo 'gained' + autocmd FocusLost * echo 'lost' + ]], false) feed_data("\034\016") -- CTRL-\ CTRL-N end) it('in normal-mode', function() - screen:expect{grid=[[ - {1: } | - {4:~ }| - {4:~ }| - {4:~ }| - {5:[No Name] }| - :autocmd FocusLost * echo 'lost' | - {3:-- TERMINAL --} | - ]]} retry(2, 3 * screen.timeout, function() feed_data('\027[I') screen:expect([[ @@ -1746,18 +1744,11 @@ describe('TUI FocusGained/FocusLost', function() -- Set up autocmds that modify the buffer, instead of just calling :echo. -- This is how we can test handling of focus gained/lost during cmdline-mode. -- See commit: 5cc87d4dabd02167117be7a978b5c8faaa975419. - feed_data(":autocmd!\n") - feed_data(":autocmd FocusLost * call append(line('$'), 'lost')\n") - feed_data(":autocmd FocusGained * call append(line('$'), 'gained')\n") - screen:expect{grid=[[ - {1: } | - {4:~ }| - {4:~ }| - {4:~ }| - {5:[No Name] }| - | - {3:-- TERMINAL --} | - ]]} + child_session:request('nvim_exec', [[ + autocmd! + autocmd FocusLost * call append(line('$'), 'lost') + autocmd FocusGained * call append(line('$'), 'gained') + ]], false) retry(2, 3 * screen.timeout, function() -- Enter cmdline-mode. feed_data(':') diff --git a/test/functional/ui/bufhl_spec.lua b/test/functional/ui/bufhl_spec.lua index 418294ac07..adec0770de 100644 --- a/test/functional/ui/bufhl_spec.lua +++ b/test/functional/ui/bufhl_spec.lua @@ -303,7 +303,7 @@ describe('Buffer highlighting', function() {1:~ }| {1:~ }| {1:~ }| - 2 change3; before #3 {MATCH:.*}| + 2 changes; before #3 {MATCH:.*}| ]]} command('undo') diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua index 3052a74f38..212d3aee7d 100644 --- a/test/functional/ui/messages_spec.lua +++ b/test/functional/ui/messages_spec.lua @@ -1322,7 +1322,7 @@ describe('ui/ext_messages', function() {1:~ }type :q{5:<Enter>} to exit {1: }| {1:~ }type :help{5:<Enter>} for help {1: }| {1:~ }| - {1:~ }type :help news{5:<Enter>} to see changes in v{MATCH:%d+%.%d+}| + {1:~{MATCH: +}}type :help news{5:<Enter>} to see changes in v{MATCH:%d+%.%d+}{1:{MATCH: +}}| {1:~ }| {MATCH:.*}| {MATCH:.*}| @@ -1378,7 +1378,7 @@ describe('ui/ext_messages', function() type :q{5:<Enter>} to exit | type :help{5:<Enter>} for help | | - type :help news{5:<Enter>} to see changes in v{MATCH:%d+%.%d+}| + {MATCH: +}type :help news{5:<Enter>} to see changes in v{MATCH:%d+%.%d+ +}| | {MATCH:.*}| {MATCH:.*}| diff --git a/test/functional/ui/screen.lua b/test/functional/ui/screen.lua index 7760f26fca..14ce050578 100644 --- a/test/functional/ui/screen.lua +++ b/test/functional/ui/screen.lua @@ -75,6 +75,7 @@ local busted = require('busted') local deepcopy = helpers.deepcopy local shallowcopy = helpers.shallowcopy local concat_tables = helpers.concat_tables +local pesc = helpers.pesc local run_session = helpers.run_session local eq = helpers.eq local dedent = helpers.dedent @@ -257,7 +258,7 @@ local ext_keys = { -- grid: Expected screen state (string). Each line represents a screen -- row. Last character of each row (typically "|") is stripped. -- Common indentation is stripped. --- "{MATCH:x}|" lines are matched against Lua pattern `x`. +-- "{MATCH:x}" in a line is matched against Lua pattern `x`. -- attr_ids: Expected text attributes. Screen rows are transformed according -- to this table, as follows: each substring S composed of -- characters having the same attributes will be substituted by @@ -382,8 +383,20 @@ function Screen:expect(expected, attr_ids, ...) end for i, row in ipairs(expected_rows) do msg_expected_rows[i] = row - local m = (row ~= actual_rows[i] and row:match('{MATCH:(.*)}') or nil) - if row ~= actual_rows[i] and (not m or not (actual_rows[i] and actual_rows[i]:match(m))) then + local pat = nil + if actual_rows[i] and row ~= actual_rows[i] then + local after = row + while true do + local s, e, m = after:find('{MATCH:(.-)}') + if not s then + pat = pat and (pat .. pesc(after)) + break + end + pat = (pat or '') .. pesc(after:sub(1, s - 1)) .. m + after = after:sub(e + 1) + end + end + if row ~= actual_rows[i] and (not pat or not actual_rows[i]:match(pat)) then msg_expected_rows[i] = '*' .. msg_expected_rows[i] if i <= #actual_rows then actual_rows[i] = '*' .. actual_rows[i] |