Mercurial > vim
view src/testdir/test_source.vim @ 25542:fe09e69465cf
Added tag v8.2.3307 for changeset 2ae1d5a4ae5cfe19f28af18837415aa6ffbac60e
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 07 Aug 2021 15:15:03 +0200 |
parents | c2a234e8c896 |
children | fc859aea8cec |
line wrap: on
line source
" Tests for the :source command. source check.vim source view_util.vim func Test_source_autocmd() call writefile([ \ 'let did_source = 1', \ ], 'Xsourced') au SourcePre *source* let did_source_pre = 1 au SourcePost *source* let did_source_post = 1 source Xsourced call assert_equal(g:did_source, 1) call assert_equal(g:did_source_pre, 1) call assert_equal(g:did_source_post, 1) call delete('Xsourced') au! SourcePre au! SourcePost unlet g:did_source unlet g:did_source_pre unlet g:did_source_post endfunc func Test_source_cmd() au SourceCmd *source* let did_source = expand('<afile>') au SourcePre *source* let did_source_pre = 2 au SourcePost *source* let did_source_post = 2 source Xsourced call assert_equal(g:did_source, 'Xsourced') call assert_false(exists('g:did_source_pre')) call assert_equal(g:did_source_post, 2) au! SourceCmd au! SourcePre au! SourcePost endfunc func Test_source_sandbox() new call writefile(["Ohello\<Esc>"], 'Xsourcehello') source! Xsourcehello | echo call assert_equal('hello', getline(1)) call assert_fails('sandbox source! Xsourcehello', 'E48:') bwipe! call delete('Xsourcehello') endfunc " When deleting a file and immediately creating a new one the inode may be " recycled. Vim should not recognize it as the same script. func Test_different_script() call writefile(['let s:var = "asdf"'], 'XoneScript') source XoneScript call delete('XoneScript') call writefile(['let g:var = s:var'], 'XtwoScript') call assert_fails('source XtwoScript', 'E121:') call delete('XtwoScript') endfunc " When sourcing a vim script, shebang should be ignored. func Test_source_ignore_shebang() call writefile(['#!./xyzabc', 'let g:val=369'], 'Xfile.vim') source Xfile.vim call assert_equal(g:val, 369) call delete('Xfile.vim') endfunc " Test for expanding <sfile> in a autocmd and for <slnum> and <sflnum> func Test_source_autocmd_sfile() let code =<< trim [CODE] let g:SfileName = '' augroup sfiletest au! autocmd User UserAutoCmd let g:Sfile = '<sfile>:t' augroup END doautocmd User UserAutoCmd let g:Slnum = expand('<slnum>') let g:Sflnum = expand('<sflnum>') augroup! sfiletest [CODE] call writefile(code, 'Xscript.vim') source Xscript.vim call assert_equal('Xscript.vim', g:Sfile) call assert_equal('7', g:Slnum) call assert_equal('8', g:Sflnum) call delete('Xscript.vim') endfunc func Test_source_error() call assert_fails('scriptencoding utf-8', 'E167:') call assert_fails('finish', 'E168:') call assert_fails('scriptversion 2', 'E984:') endfunc " Test for sourcing a script recursively func Test_nested_script() CheckRunVimInTerminal call writefile([':source! Xscript.vim', ''], 'Xscript.vim') let buf = RunVimInTerminal('', {'rows': 6}) call term_wait(buf) call term_sendkeys(buf, ":set noruler\n") call term_sendkeys(buf, ":source! Xscript.vim\n") call term_wait(buf) call WaitForAssert({-> assert_match('E22: Scripts nested too deep\s*', term_getline(buf, 6))}) call delete('Xscript.vim') call StopVimInTerminal(buf) endfunc " vim: shiftwidth=2 sts=2 expandtab