Files
neovim/src/nvim/testdir/test_source.vim
zeertzjq a890c019a3 vim-patch:8.2.0132: script may be re-used when deleting and creating a new one
Problem:    Script may be re-used when deleting and creating a new one.
Solution:   When the inode matches, also check the file name.
ca33eb256e
2022-07-08 11:11:22 +08:00

61 lines
1.6 KiB
VimL

" Tests for the :source command.
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 ch_logfile('logfile', 'w')
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