xref: /vim-8.2.3635/src/testdir/test_source.vim (revision bc2b71d4)
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