Mercurial > vim
diff src/testdir/test_evalcmd.vim @ 9436:f048e5a27253 v7.4.1999
commit https://github.com/vim/vim/commit/bc5d6dd1dd1dc3a06e4e655fc9479529db288365
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Jul 7 23:04:18 2016 +0200
patch 7.4.1999
Problem: evalcmd() doesn't work recursively.
Solution: Use redir_evalcmd instead of redir_vname.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 07 Jul 2016 23:15:05 +0200 |
parents | e70fd2eb3ae1 |
children |
line wrap: on
line diff
--- a/src/testdir/test_evalcmd.vim +++ b/src/testdir/test_evalcmd.vim @@ -1,8 +1,33 @@ " test evalcmd() +func NestedEval() + let nested = evalcmd('echo "nested\nlines"') + echo 'got: "' . nested . '"' +endfunc + +func NestedRedir() + redir => var + echo 'broken' + redir END +endfunc + func Test_evalcmd() call assert_equal("\nnocompatible", evalcmd('set compatible?')) call assert_equal("\nsomething\nnice", evalcmd('echo "something\nnice"')) + call assert_equal("noendofline", evalcmd('echon "noendofline"')) + call assert_equal("", evalcmd(123)) + + call assert_equal("\ngot: \"\nnested\nlines\"", evalcmd('call NestedEval()')) + redir => redired + echo 'this' + let evaled = evalcmd('echo "that"') + echo 'theend' + redir END + call assert_equal("\nthis\ntheend", redired) + call assert_equal("\nthat", evaled) + call assert_fails('call evalcmd("doesnotexist")', 'E492:') + call assert_fails('call evalcmd(3.4)', 'E806:') + call assert_fails('call evalcmd("call NestedRedir()")', 'E930:') endfunc