aboutsummaryrefslogtreecommitdiff
path: root/test/functional/terminal/highlight_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/terminal/highlight_spec.lua')
-rw-r--r--test/functional/terminal/highlight_spec.lua163
1 files changed, 163 insertions, 0 deletions
diff --git a/test/functional/terminal/highlight_spec.lua b/test/functional/terminal/highlight_spec.lua
new file mode 100644
index 0000000000..59b0d2c19d
--- /dev/null
+++ b/test/functional/terminal/highlight_spec.lua
@@ -0,0 +1,163 @@
+local helpers = require('test.functional.helpers')
+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 nvim_dir, execute = helpers.nvim_dir, helpers.execute
+
+
+describe('terminal window highlighting', function()
+ local screen
+
+ before_each(function()
+ clear()
+ screen = Screen.new(50, 7)
+ screen:set_default_attr_ids({
+ [1] = {foreground = 45},
+ [2] = {background = 46},
+ [3] = {foreground = 45, background = 46},
+ [4] = {bold = true, italic = true, underline = true}
+ })
+ screen:set_default_attr_ignore({
+ [1] = {bold = true},
+ [2] = {foreground = 12},
+ [3] = {bold = true, reverse = true},
+ [5] = {background = 11},
+ [6] = {foreground = 130},
+ [7] = {reverse = true},
+ [8] = {background = 11}
+ })
+ screen:attach(false)
+ execute('term "' ..nvim_dir.. '/tty-test"')
+ screen:expect([[
+ tty ready |
+ |
+ |
+ |
+ |
+ |
+ -- TERMINAL -- |
+ ]])
+ end)
+
+ function descr(title, attr_num, set_attrs_fn)
+ local function sub(s)
+ return s:gsub('NUM', attr_num)
+ end
+
+ describe(title, function()
+ before_each(function()
+ set_attrs_fn()
+ thelpers.feed_data('text')
+ thelpers.clear_attrs()
+ thelpers.feed_data('text')
+ end)
+
+ local function pass_attrs()
+ local s = sub([[
+ tty ready |
+ {NUM:text}text |
+ |
+ |
+ |
+ |
+ -- TERMINAL -- |
+ ]])
+ screen:expect(s)
+ end
+
+ it('will pass the corresponding attributes', pass_attrs)
+
+ it('will pass the corresponding attributes on scrollback', function()
+ pass_attrs()
+ local lines = {}
+ for i = 1, 8 do
+ table.insert(lines, 'line'..tostring(i))
+ end
+ table.insert(lines, '')
+ thelpers.feed_data(lines)
+ screen:expect([[
+ line4 |
+ line5 |
+ line6 |
+ line7 |
+ line8 |
+ |
+ -- TERMINAL -- |
+ ]])
+ feed('<c-\\><c-n>gg')
+ local s = sub([[
+ ^tty ready |
+ {NUM:text}textline1 |
+ line2 |
+ line3 |
+ line4 |
+ line5 |
+ |
+ ]])
+ screen:expect(s)
+ end)
+ end)
+ end
+
+ descr('foreground', 1, function() thelpers.set_fg(45) end)
+ descr('background', 2, function() thelpers.set_bg(46) end)
+ descr('foreground and background', 3, function()
+ thelpers.set_fg(45)
+ thelpers.set_bg(46)
+ end)
+ descr('bold, italics and underline', 4, function()
+ thelpers.set_bold()
+ thelpers.set_italic()
+ thelpers.set_underline()
+ end)
+end)
+
+
+describe('terminal window highlighting with custom palette', function()
+ local screen
+
+ before_each(function()
+ clear()
+ screen = Screen.new(50, 7)
+ screen:set_default_attr_ids({
+ [1] = {foreground = 1193046}
+ })
+ screen:set_default_attr_ignore({
+ [1] = {bold = true},
+ [2] = {foreground = 12},
+ [3] = {bold = true, reverse = true},
+ [5] = {background = 11},
+ [6] = {foreground = 130},
+ [7] = {reverse = true},
+ [8] = {background = 11}
+ })
+ screen:attach(true)
+ nvim('set_var', 'terminal_color_3', '#123456')
+ execute('term "' ..nvim_dir.. '/tty-test"')
+ screen:expect([[
+ tty ready |
+ |
+ |
+ |
+ |
+ |
+ -- TERMINAL -- |
+ ]])
+ end)
+
+ it('will use the custom color', function()
+ thelpers.set_fg(3)
+ thelpers.feed_data('text')
+ thelpers.clear_attrs()
+ thelpers.feed_data('text')
+ screen:expect([[
+ tty ready |
+ {1:text}text |
+ |
+ |
+ |
+ |
+ -- TERMINAL -- |
+ ]])
+ end)
+end)