aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlexandre Dubray <alexandre.dubray@student.uclouvain.be>2018-01-09 12:01:02 +0100
committerJustin M. Keyes <justinkz@gmail.com>2020-01-26 17:13:00 -0800
commitcf67f19ac2104ece76d040c8184bc287428299b3 (patch)
treedbf5f357e8985dd23bad128617a534b53363b36a /test
parent88f133c30d4b46e371f0cdb0797113cbbca9cc59 (diff)
downloadrneovim-cf67f19ac2104ece76d040c8184bc287428299b3.tar.gz
rneovim-cf67f19ac2104ece76d040c8184bc287428299b3.tar.bz2
rneovim-cf67f19ac2104ece76d040c8184bc287428299b3.zip
mksession: restore same :term buf in split windows
Problem: When session-restore creates a terminal buffer with command like `:edit term://.//16450:/bin/bash`, the buffer gets a different name (depends on PID). Thus the later call to `bufexists('term://.//16450:/bin/bash)` will return false. Solution: Force the buffer name with :file. This as least ensures the same buffer will show in multiple windows correctly, as expected when saving the session. But it still has problems: 1. the PID in the buffer name is bogus 2. redundant :terminal buffers still hang around fix #5250
Diffstat (limited to 'test')
-rw-r--r--test/functional/ex_cmds/mksession_spec.lua19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/functional/ex_cmds/mksession_spec.lua b/test/functional/ex_cmds/mksession_spec.lua
index 855f8105aa..726cfe7fe5 100644
--- a/test/functional/ex_cmds/mksession_spec.lua
+++ b/test/functional/ex_cmds/mksession_spec.lua
@@ -91,4 +91,23 @@ describe(':mksession', function()
matches('^term://'..pesc(expected_cwd)..'//%d+:', funcs.expand('%'))
command('qall!')
end)
+
+ it('restores multiple windows with same terminal instances', function()
+ -- Create a view with two buffers referencing the same terminal instance
+ command('terminal')
+ command('split')
+ command('mksession ' .. session_file)
+
+ clear()
+
+ command('source ' .. session_file)
+ -- Getting the name of the buffer shown to compare with the other window
+ local eval = helpers.eval
+
+ command('exe 1 . "wincmd w"')
+ local expected_pid = eval('b:terminal_job_pid')
+
+ command('exe 2 . "wincmd w"')
+ eq(expected_pid, eval('b:terminal_job_pid'))
+ end)
end)