aboutsummaryrefslogtreecommitdiff
path: root/test/functional/ex_cmds/source_spec.lua
diff options
context:
space:
mode:
authorSean Dewar <seandewar@users.noreply.github.com>2021-09-15 13:17:07 +0100
committerGitHub <noreply@github.com>2021-09-15 05:17:07 -0700
commitafdc9e61502a9f02c8cf5156652a1bde027e4345 (patch)
tree72311e75ce51f31422c5abdb75cbf2154faa1094 /test/functional/ex_cmds/source_spec.lua
parent6188926e00081ae4b1a33d5fd12692a6749a2144 (diff)
downloadrneovim-afdc9e61502a9f02c8cf5156652a1bde027e4345.tar.gz
rneovim-afdc9e61502a9f02c8cf5156652a1bde027e4345.tar.bz2
rneovim-afdc9e61502a9f02c8cf5156652a1bde027e4345.zip
fix(:source): copy curbuf lines to memory before sourcing #15111
It's possible for weirdness to happen if curbuf is modified while sourcing from it via :source (with no arguments). For example: - Deleting lines from or wiping curbuf can cause internal error E315 to be thrown from ml_get. - Changing the curbuf to another buffer while sourcing can cause lines from the new curbuf to then be sourced instead.
Diffstat (limited to 'test/functional/ex_cmds/source_spec.lua')
-rw-r--r--test/functional/ex_cmds/source_spec.lua9
1 files changed, 9 insertions, 0 deletions
diff --git a/test/functional/ex_cmds/source_spec.lua b/test/functional/ex_cmds/source_spec.lua
index 3cef412bb6..bdf6ae76d1 100644
--- a/test/functional/ex_cmds/source_spec.lua
+++ b/test/functional/ex_cmds/source_spec.lua
@@ -60,6 +60,15 @@ describe(':source', function()
eq('Vim(let):E15: Invalid expression: #{', exc_exec("'<,'>source"))
end)
+ it('does not break if current buffer is modified while sourced', function()
+ insert [[
+ bwipeout!
+ let a = 123
+ ]]
+ command('source')
+ eq('123', meths.exec('echo a', true))
+ end)
+
it('multiline heredoc command', function()
insert([[
lua << EOF