aboutsummaryrefslogtreecommitdiff
path: root/test/functional/ui/embed_spec.lua
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2018-07-18 13:31:23 +0200
committerBjörn Linse <bjorn.linse@gmail.com>2018-09-18 19:22:16 +0200
commitbd8d43c6fef868ad5ed50a79deb0f7adc1f5e53a (patch)
tree1798c2487a0a84ae7e98ac5d61906ca21742601e /test/functional/ui/embed_spec.lua
parent32ad52ae04d3fea1fa84594b9b13ee1442a410ca (diff)
downloadrneovim-bd8d43c6fef868ad5ed50a79deb0f7adc1f5e53a.tar.gz
rneovim-bd8d43c6fef868ad5ed50a79deb0f7adc1f5e53a.tar.bz2
rneovim-bd8d43c6fef868ad5ed50a79deb0f7adc1f5e53a.zip
startup: wait for embedder before executing startup commands and files
Give embeders a chance to set up nvim, by processing a request before startup. This allows an external UI to show messages and prompts from --cmd and buffer loading (e.g. swap files)
Diffstat (limited to 'test/functional/ui/embed_spec.lua')
-rw-r--r--test/functional/ui/embed_spec.lua71
1 files changed, 71 insertions, 0 deletions
diff --git a/test/functional/ui/embed_spec.lua b/test/functional/ui/embed_spec.lua
new file mode 100644
index 0000000000..7d41567fda
--- /dev/null
+++ b/test/functional/ui/embed_spec.lua
@@ -0,0 +1,71 @@
+local helpers = require('test.functional.helpers')(after_each)
+local Screen = require('test.functional.ui.screen')
+
+local feed = helpers.feed
+local spawn, set_session = helpers.spawn, helpers.set_session
+local nvim_prog, nvim_set = helpers.nvim_prog, helpers.nvim_set
+local merge_args, prepend_argv = helpers.merge_args, helpers.prepend_argv
+
+describe('--embed UI on startup', function()
+ local session, screen
+ local function startup(...)
+ local nvim_argv = {nvim_prog, '-u', 'NONE', '-i', 'NONE',
+ '--cmd', nvim_set, '--embed'}
+ nvim_argv = merge_args(prepend_argv, nvim_argv, {...})
+ session = spawn(nvim_argv)
+ set_session(session)
+
+ -- attach immediately after startup, for early UI
+ screen = Screen.new(60, 8)
+ screen:attach()
+ screen:set_default_attr_ids({
+ [1] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red},
+ [2] = {bold = true, foreground = Screen.colors.SeaGreen4},
+ [3] = {bold = true, foreground = Screen.colors.Blue1},
+ })
+ end
+
+ after_each(function()
+ session:close()
+ end)
+
+ it('can display errors', function()
+ startup('--cmd', 'echoerr invalid+')
+ screen:expect([[
+ |
+ |
+ |
+ |
+ Error detected while processing pre-vimrc command line: |
+ E121: Undefined variable: invalid |
+ E15: Invalid expression: invalid+ |
+ Press ENTER or type command to continue^ |
+ ]])
+
+ feed('<cr>')
+ screen:expect([[
+ ^ |
+ {3:~ }|
+ {3:~ }|
+ {3:~ }|
+ {3:~ }|
+ {3:~ }|
+ {3:~ }|
+ |
+ ]])
+ end)
+
+ it("doesn't erase output when setting colors", function()
+ startup('--cmd', 'echoerr "foo"', '--cmd', 'color default', '--cmd', 'echoerr "bar"')
+ screen:expect([[
+ |
+ |
+ |
+ |
+ Error detected while processing pre-vimrc command line: |
+ foo |
+ {1:bar} |
+ {2:Press ENTER or type command to continue}^ |
+ ]])
+ end)
+end)