12b618528SBram Moolenaar" Tests for the :source command. 22b618528SBram Moolenaar 32b618528SBram Moolenaarfunc Test_source_autocmd() 42b618528SBram Moolenaar call writefile([ 52b618528SBram Moolenaar \ 'let did_source = 1', 62b618528SBram Moolenaar \ ], 'Xsourced') 72b618528SBram Moolenaar au SourcePre *source* let did_source_pre = 1 82b618528SBram Moolenaar au SourcePost *source* let did_source_post = 1 92b618528SBram Moolenaar 102b618528SBram Moolenaar source Xsourced 112b618528SBram Moolenaar 122b618528SBram Moolenaar call assert_equal(g:did_source, 1) 132b618528SBram Moolenaar call assert_equal(g:did_source_pre, 1) 142b618528SBram Moolenaar call assert_equal(g:did_source_post, 1) 152b618528SBram Moolenaar 162b618528SBram Moolenaar call delete('Xsourced') 172b618528SBram Moolenaar au! SourcePre 182b618528SBram Moolenaar au! SourcePost 192b618528SBram Moolenaar unlet g:did_source 202b618528SBram Moolenaar unlet g:did_source_pre 212b618528SBram Moolenaar unlet g:did_source_post 222b618528SBram Moolenaarendfunc 232b618528SBram Moolenaar 242b618528SBram Moolenaarfunc Test_source_cmd() 252b618528SBram Moolenaar au SourceCmd *source* let did_source = expand('<afile>') 262b618528SBram Moolenaar au SourcePre *source* let did_source_pre = 2 272b618528SBram Moolenaar au SourcePost *source* let did_source_post = 2 282b618528SBram Moolenaar 292b618528SBram Moolenaar source Xsourced 302b618528SBram Moolenaar 312b618528SBram Moolenaar call assert_equal(g:did_source, 'Xsourced') 322b618528SBram Moolenaar call assert_false(exists('g:did_source_pre')) 332b618528SBram Moolenaar call assert_equal(g:did_source_post, 2) 342b618528SBram Moolenaar 352b618528SBram Moolenaar au! SourceCmd 362b618528SBram Moolenaar au! SourcePre 372b618528SBram Moolenaar au! SourcePost 382b618528SBram Moolenaarendfunc 3953575521SBram Moolenaar 4053575521SBram Moolenaarfunc Test_source_sandbox() 4153575521SBram Moolenaar new 4253575521SBram Moolenaar call writefile(["Ohello\<Esc>"], 'Xsourcehello') 4353575521SBram Moolenaar source! Xsourcehello | echo 4453575521SBram Moolenaar call assert_equal('hello', getline(1)) 4553575521SBram Moolenaar call assert_fails('sandbox source! Xsourcehello', 'E48:') 4653575521SBram Moolenaar bwipe! 47ddd33087SBram Moolenaar call delete('Xsourcehello') 4853575521SBram Moolenaarendfunc 49ca33eb25SBram Moolenaar 50ca33eb25SBram Moolenaar" When deleting a file and immediately creating a new one the inode may be 51ca33eb25SBram Moolenaar" recycled. Vim should not recognize it as the same script. 52ca33eb25SBram Moolenaarfunc Test_different_script() 53ca33eb25SBram Moolenaar call writefile(['let s:var = "asdf"'], 'XoneScript') 54ca33eb25SBram Moolenaar source XoneScript 55ca33eb25SBram Moolenaar call delete('XoneScript') 56ca33eb25SBram Moolenaar call writefile(['let g:var = s:var'], 'XtwoScript') 57ca33eb25SBram Moolenaar call assert_fails('source XtwoScript', 'E121:') 58ca33eb25SBram Moolenaar call delete('XtwoScript') 59ca33eb25SBram Moolenaarendfunc 609f6277bdSBram Moolenaar 619f6277bdSBram Moolenaar" When sourcing a vim script, shebang should be ignored. 629f6277bdSBram Moolenaarfunc Test_source_ignore_shebang() 639f6277bdSBram Moolenaar call writefile(['#!./xyzabc', 'let g:val=369'], 'Xfile.vim') 649f6277bdSBram Moolenaar source Xfile.vim 659f6277bdSBram Moolenaar call assert_equal(g:val, 369) 669f6277bdSBram Moolenaar call delete('Xfile.vim') 679f6277bdSBram Moolenaarendfunc 689f6277bdSBram Moolenaar 69*bc2b71d4SBram Moolenaar" Test for expanding <sfile> in a autocmd and for <slnum> and <sflnum> 70*bc2b71d4SBram Moolenaarfunc Test_source_autocmd_sfile() 71*bc2b71d4SBram Moolenaar let code =<< trim [CODE] 72*bc2b71d4SBram Moolenaar let g:SfileName = '' 73*bc2b71d4SBram Moolenaar augroup sfiletest 74*bc2b71d4SBram Moolenaar au! 75*bc2b71d4SBram Moolenaar autocmd User UserAutoCmd let g:Sfile = '<sfile>:t' 76*bc2b71d4SBram Moolenaar augroup END 77*bc2b71d4SBram Moolenaar doautocmd User UserAutoCmd 78*bc2b71d4SBram Moolenaar let g:Slnum = expand('<slnum>') 79*bc2b71d4SBram Moolenaar let g:Sflnum = expand('<sflnum>') 80*bc2b71d4SBram Moolenaar augroup! sfiletest 81*bc2b71d4SBram Moolenaar [CODE] 82*bc2b71d4SBram Moolenaar call writefile(code, 'Xscript.vim') 83*bc2b71d4SBram Moolenaar source Xscript.vim 84*bc2b71d4SBram Moolenaar call assert_equal('Xscript.vim', g:Sfile) 85*bc2b71d4SBram Moolenaar call assert_equal('7', g:Slnum) 86*bc2b71d4SBram Moolenaar call assert_equal('8', g:Sflnum) 87*bc2b71d4SBram Moolenaar call delete('Xscript.vim') 88*bc2b71d4SBram Moolenaarendfunc 89*bc2b71d4SBram Moolenaar 909f6277bdSBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 91