diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2019-11-09 22:22:24 -0800 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2019-11-09 22:26:01 -0800 |
commit | 4abb67c027e93afac8c2f436d48956fffcd69848 (patch) | |
tree | 24400f4eb3be31db2a4d9fa0999bb9ca3ef0344c /test/functional/ui/screen.lua | |
parent | c0abaf9ca604485ceee04ae8ca83c11382febc89 (diff) | |
download | rneovim-4abb67c027e93afac8c2f436d48956fffcd69848.tar.gz rneovim-4abb67c027e93afac8c2f436d48956fffcd69848.tar.bz2 rneovim-4abb67c027e93afac8c2f436d48956fffcd69848.zip |
test/Screen:expect: replace "{IGNORE}" with "{MATCH:…}"
ref #11004
Diffstat (limited to 'test/functional/ui/screen.lua')
-rw-r--r-- | test/functional/ui/screen.lua | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/test/functional/ui/screen.lua b/test/functional/ui/screen.lua index e9583bf805..d3f78bf77b 100644 --- a/test/functional/ui/screen.lua +++ b/test/functional/ui/screen.lua @@ -269,7 +269,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. --- Lines containing only "{IGNORE}|" are skipped. +-- "{MATCH:x}|" lines are 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 @@ -390,18 +390,16 @@ function Screen:expect(expected, attr_ids, ...) err_msg = "Expected screen height " .. #expected_rows .. ' differs from actual height ' .. #actual_rows .. '.' end - for i = 1, #expected_rows do - msg_expected_rows[i] = expected_rows[i] - if expected_rows[i] ~= actual_rows[i] and expected_rows[i] ~= "{IGNORE}|" then - local m = expected_rows[i]:match('{MATCH:(.*)}') - if not m or not actual_rows[i]:match(m) then - msg_expected_rows[i] = '*' .. msg_expected_rows[i] - if i <= #actual_rows then - actual_rows[i] = '*' .. actual_rows[i] - end - if err_msg == nil then - err_msg = 'Row ' .. tostring(i) .. ' did not match.' - 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]:match(m)) then + msg_expected_rows[i] = '*' .. msg_expected_rows[i] + if i <= #actual_rows then + actual_rows[i] = '*' .. actual_rows[i] + end + if err_msg == nil then + err_msg = 'Row ' .. tostring(i) .. ' did not match.' end end end |