blob: b8fe8422b32c9a9874cd8c232a68c94a2285d03d [file] [log] [blame]
Bram Moolenaar2b618522019-01-12 13:26:03 +01001" Tests for the :source command.
2
3func Test_source_autocmd()
4 call writefile([
5 \ 'let did_source = 1',
6 \ ], 'Xsourced')
7 au SourcePre *source* let did_source_pre = 1
8 au SourcePost *source* let did_source_post = 1
9
10 source Xsourced
11
12 call assert_equal(g:did_source, 1)
13 call assert_equal(g:did_source_pre, 1)
14 call assert_equal(g:did_source_post, 1)
15
16 call delete('Xsourced')
17 au! SourcePre
18 au! SourcePost
19 unlet g:did_source
20 unlet g:did_source_pre
21 unlet g:did_source_post
22endfunc
23
24func Test_source_cmd()
25 au SourceCmd *source* let did_source = expand('<afile>')
26 au SourcePre *source* let did_source_pre = 2
27 au SourcePost *source* let did_source_post = 2
28
29 source Xsourced
30
31 call assert_equal(g:did_source, 'Xsourced')
32 call assert_false(exists('g:did_source_pre'))
33 call assert_equal(g:did_source_post, 2)
34
35 au! SourceCmd
36 au! SourcePre
37 au! SourcePost
38endfunc
Bram Moolenaar53575522019-05-22 22:38:25 +020039
40func Test_source_sandbox()
41 new
42 call writefile(["Ohello\<Esc>"], 'Xsourcehello')
43 source! Xsourcehello | echo
44 call assert_equal('hello', getline(1))
45 call assert_fails('sandbox source! Xsourcehello', 'E48:')
46 bwipe!
Bram Moolenaarddd33082019-06-03 23:07:25 +020047 call delete('Xsourcehello')
Bram Moolenaar53575522019-05-22 22:38:25 +020048endfunc
Bram Moolenaarca33eb22020-01-19 20:18:09 +010049
50" When deleting a file and immediately creating a new one the inode may be
51" recycled. Vim should not recognize it as the same script.
52func Test_different_script()
Bram Moolenaarca33eb22020-01-19 20:18:09 +010053 call writefile(['let s:var = "asdf"'], 'XoneScript')
54 source XoneScript
55 call delete('XoneScript')
56 call writefile(['let g:var = s:var'], 'XtwoScript')
57 call assert_fails('source XtwoScript', 'E121:')
58 call delete('XtwoScript')
59endfunc