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('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)