mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
test: make {MATCH:} behave less unexpectedly in screen:expect()
Include the rest of the line and allow multiple {MATCH:} patterns.
This commit is contained in:
parent
bb369a14f3
commit
9b9f8dfcc4
@ -413,7 +413,7 @@ describe('named marks view', function()
|
||||
6 line |
|
||||
^7 line |
|
||||
8 line |
|
||||
{MATCH:.*} |
|
||||
{MATCH:.*marks} |
|
||||
|
|
||||
]])
|
||||
end)
|
||||
|
@ -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)
|
||||
|
@ -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] }|
|
||||
|
@ -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)
|
||||
|
@ -303,7 +303,7 @@ describe('Buffer highlighting', function()
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
2 change3; before #3 {MATCH:.*}|
|
||||
2 changes; before #3 {MATCH:.*}|
|
||||
]]}
|
||||
|
||||
command('undo')
|
||||
|
@ -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:.*}|
|
||||
|
@ -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]
|
||||
|
Loading…
Reference in New Issue
Block a user