annotate src/testdir/test_expand.vim @ 28674:38f7a132bba3 v8.2.4861

patch 8.2.4861: it is not easy to restore saved mappings Commit: https://github.com/vim/vim/commit/51d04d16f21e19d6eded98f9530d84089102f925 Author: Ernie Rael <errael@raelity.com> Date: Wed May 4 15:40:22 2022 +0100 patch 8.2.4861: it is not easy to restore saved mappings Problem: It is not easy to restore saved mappings. Solution: Make mapset() accept a dict argument. (Ernie Rael, closes https://github.com/vim/vim/issues/10295)
author Bram Moolenaar <Bram@vim.org>
date Wed, 04 May 2022 16:45:03 +0200
parents 80ed5ad30d28
children c428a4e53b9c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7617
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 " Test for expanding file names
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2
19425
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
3 source shared.vim
26183
9865f996a3c0 patch 8.2.3623: "$*" is expanded to "nonomatch"
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
4 source check.vim
19425
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
5
7617
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6 func Test_with_directories()
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 call mkdir('Xdir1')
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 call mkdir('Xdir2')
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 call mkdir('Xdir3')
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 cd Xdir3
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 call mkdir('Xdir4')
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 cd ..
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14 split Xdir1/file
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 call setline(1, ['a', 'b'])
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16 w
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17 w Xdir3/Xdir4/file
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 close
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 next Xdir?/*/file
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21 call assert_equal('Xdir3/Xdir4/file', expand('%'))
7623
2720952e9acb commit https://github.com/vim/vim/commit/f60b796fa9870bdfc4cdeb91653bac041916077d
Christian Brabandt <cb@256bit.org>
parents: 7617
diff changeset
22 if has('unix')
2720952e9acb commit https://github.com/vim/vim/commit/f60b796fa9870bdfc4cdeb91653bac041916077d
Christian Brabandt <cb@256bit.org>
parents: 7617
diff changeset
23 next! Xdir?/*/nofile
2720952e9acb commit https://github.com/vim/vim/commit/f60b796fa9870bdfc4cdeb91653bac041916077d
Christian Brabandt <cb@256bit.org>
parents: 7617
diff changeset
24 call assert_equal('Xdir?/*/nofile', expand('%'))
2720952e9acb commit https://github.com/vim/vim/commit/f60b796fa9870bdfc4cdeb91653bac041916077d
Christian Brabandt <cb@256bit.org>
parents: 7617
diff changeset
25 endif
7643
2b2e90fcd72b commit https://github.com/vim/vim/commit/08b270a8a4544be9a7fecce311834fde2b457634
Christian Brabandt <cb@256bit.org>
parents: 7623
diff changeset
26 " Edit another file, on MS-Windows the swap file would be in use and can't
2b2e90fcd72b commit https://github.com/vim/vim/commit/08b270a8a4544be9a7fecce311834fde2b457634
Christian Brabandt <cb@256bit.org>
parents: 7623
diff changeset
27 " be deleted.
2b2e90fcd72b commit https://github.com/vim/vim/commit/08b270a8a4544be9a7fecce311834fde2b457634
Christian Brabandt <cb@256bit.org>
parents: 7623
diff changeset
28 edit foo
7617
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
29
7643
2b2e90fcd72b commit https://github.com/vim/vim/commit/08b270a8a4544be9a7fecce311834fde2b457634
Christian Brabandt <cb@256bit.org>
parents: 7623
diff changeset
30 call assert_equal(0, delete('Xdir1', 'rf'))
2b2e90fcd72b commit https://github.com/vim/vim/commit/08b270a8a4544be9a7fecce311834fde2b457634
Christian Brabandt <cb@256bit.org>
parents: 7623
diff changeset
31 call assert_equal(0, delete('Xdir2', 'rf'))
2b2e90fcd72b commit https://github.com/vim/vim/commit/08b270a8a4544be9a7fecce311834fde2b457634
Christian Brabandt <cb@256bit.org>
parents: 7623
diff changeset
32 call assert_equal(0, delete('Xdir3', 'rf'))
7617
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
33 endfunc
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
34
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
35 func Test_with_tilde()
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
36 let dir = getcwd()
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
37 call mkdir('Xdir ~ dir')
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
38 call assert_true(isdirectory('Xdir ~ dir'))
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
39 cd Xdir\ ~\ dir
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
40 call assert_true(getcwd() =~ 'Xdir \~ dir')
18568
26a04a556982 patch 8.1.2278: using "cd" with "exe" may fail
Bram Moolenaar <Bram@vim.org>
parents: 17849
diff changeset
41 call chdir(dir)
7617
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
42 call delete('Xdir ~ dir', 'd')
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
43 call assert_false(isdirectory('Xdir ~ dir'))
80bc36419c21 commit https://github.com/vim/vim/commit/58adb14739fa240ca6020cede9ab1f1cb07bd90a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
44 endfunc
14393
c62601adad69 patch 8.1.0211: expanding a file name "~" results in $HOME
Christian Brabandt <cb@256bit.org>
parents: 7643
diff changeset
45
c62601adad69 patch 8.1.0211: expanding a file name "~" results in $HOME
Christian Brabandt <cb@256bit.org>
parents: 7643
diff changeset
46 func Test_expand_tilde_filename()
c62601adad69 patch 8.1.0211: expanding a file name "~" results in $HOME
Christian Brabandt <cb@256bit.org>
parents: 7643
diff changeset
47 split ~
c62601adad69 patch 8.1.0211: expanding a file name "~" results in $HOME
Christian Brabandt <cb@256bit.org>
parents: 7643
diff changeset
48 call assert_equal('~', expand('%'))
c62601adad69 patch 8.1.0211: expanding a file name "~" results in $HOME
Christian Brabandt <cb@256bit.org>
parents: 7643
diff changeset
49 call assert_notequal(expand('%:p'), expand('~/'))
c62601adad69 patch 8.1.0211: expanding a file name "~" results in $HOME
Christian Brabandt <cb@256bit.org>
parents: 7643
diff changeset
50 call assert_match('\~', expand('%:p'))
c62601adad69 patch 8.1.0211: expanding a file name "~" results in $HOME
Christian Brabandt <cb@256bit.org>
parents: 7643
diff changeset
51 bwipe!
c62601adad69 patch 8.1.0211: expanding a file name "~" results in $HOME
Christian Brabandt <cb@256bit.org>
parents: 7643
diff changeset
52 endfunc
17020
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
53
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
54 func Test_expandcmd()
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
55 let $FOO = 'Test'
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
56 call assert_equal('e x/Test/y', expandcmd('e x/$FOO/y'))
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
57 unlet $FOO
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
58
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
59 new
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
60 edit Xfile1
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
61 call assert_equal('e Xfile1', expandcmd('e %'))
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
62 edit Xfile2
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
63 edit Xfile1
17849
73ddc462979d patch 8.1.1921: more functions can be used as methods
Bram Moolenaar <Bram@vim.org>
parents: 17020
diff changeset
64 call assert_equal('e Xfile2', 'e #'->expandcmd())
17020
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
65 edit Xfile2
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
66 edit Xfile3
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
67 edit Xfile4
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
68 let bnum = bufnr('Xfile2')
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
69 call assert_equal('e Xfile2', expandcmd('e #' . bnum))
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
70 call setline('.', 'Vim!@#')
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
71 call assert_equal('e Vim', expandcmd('e <cword>'))
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
72 call assert_equal('e Vim!@#', expandcmd('e <cWORD>'))
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
73 enew!
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
74 edit Xfile.java
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
75 call assert_equal('e Xfile.py', expandcmd('e %:r.py'))
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
76 call assert_equal('make abc.java', expandcmd('make abc.%:e'))
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
77 call assert_equal('make Xabc.java', expandcmd('make %:s?file?abc?'))
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
78 edit a1a2a3.rb
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
79 call assert_equal('make b1b2b3.rb a1a2a3 Xfile.o', expandcmd('make %:gs?a?b? %< #<.o'))
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
80
28283
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
81 call assert_equal('make <afile>', expandcmd("make <afile>"))
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
82 call assert_equal('make <amatch>', expandcmd("make <amatch>"))
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
83 call assert_equal('make <abuf>', expandcmd("make <abuf>"))
17020
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
84 enew
28283
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
85 call assert_equal('make %', expandcmd("make %"))
19471
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
86 let $FOO="blue\tsky"
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
87 call setline(1, "$FOO")
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
88 call assert_equal("grep pat blue\tsky", expandcmd('grep pat <cfile>'))
19906
031184ace7c5 patch 8.2.0509: various code is not properly tested.
Bram Moolenaar <Bram@vim.org>
parents: 19471
diff changeset
89
031184ace7c5 patch 8.2.0509: various code is not properly tested.
Bram Moolenaar <Bram@vim.org>
parents: 19471
diff changeset
90 " Test for expression expansion `=
031184ace7c5 patch 8.2.0509: various code is not properly tested.
Bram Moolenaar <Bram@vim.org>
parents: 19471
diff changeset
91 let $FOO= "blue"
031184ace7c5 patch 8.2.0509: various code is not properly tested.
Bram Moolenaar <Bram@vim.org>
parents: 19471
diff changeset
92 call assert_equal("blue sky", expandcmd("`=$FOO .. ' sky'`"))
28307
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
93 let x = expandcmd("`=axbycz`")
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
94 call assert_equal('`=axbycz`', x)
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
95 call assert_fails('let x = expandcmd("`=axbycz`", #{errmsg: 1})', 'E121:')
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
96 let x = expandcmd("`=axbycz`", #{abc: []})
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
97 call assert_equal('`=axbycz`', x)
19906
031184ace7c5 patch 8.2.0509: various code is not properly tested.
Bram Moolenaar <Bram@vim.org>
parents: 19471
diff changeset
98
031184ace7c5 patch 8.2.0509: various code is not properly tested.
Bram Moolenaar <Bram@vim.org>
parents: 19471
diff changeset
99 " Test for env variable with spaces
031184ace7c5 patch 8.2.0509: various code is not properly tested.
Bram Moolenaar <Bram@vim.org>
parents: 19471
diff changeset
100 let $FOO= "foo bar baz"
031184ace7c5 patch 8.2.0509: various code is not properly tested.
Bram Moolenaar <Bram@vim.org>
parents: 19471
diff changeset
101 call assert_equal("e foo bar baz", expandcmd("e $FOO"))
031184ace7c5 patch 8.2.0509: various code is not properly tested.
Bram Moolenaar <Bram@vim.org>
parents: 19471
diff changeset
102
28307
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
103 if has('unix') && executable('bash')
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
104 " test for using the shell to expand a command argument.
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
105 " only bash supports the {..} syntax
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
106 set shell=bash
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
107 let x = expandcmd('{1..4}')
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
108 call assert_equal('{1..4}', x)
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
109 call assert_fails("let x = expandcmd('{1..4}', #{errmsg: v:true})", 'E77:')
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
110 let x = expandcmd('{1..4}', #{error: v:true})
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
111 call assert_equal('{1..4}', x)
425700af491b patch 8.2.4679: cannot have expandcmd() give an error message for mistakes
Bram Moolenaar <Bram@vim.org>
parents: 28283
diff changeset
112 set shell&
28283
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
113 endif
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
114
19471
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
115 unlet $FOO
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
116 close!
17020
1841c03a9b5e patch 8.1.1510: a plugin cannot easily expand a command like done internally
Bram Moolenaar <Bram@vim.org>
parents: 14393
diff changeset
117 endfunc
19425
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
118
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
119 " Test for expanding <sfile>, <slnum> and <sflnum> outside of sourcing a script
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
120 func Test_source_sfile()
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
121 let lines =<< trim [SCRIPT]
28283
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
122 :call assert_equal('<sfile>', expandcmd("<sfile>"))
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
123 :call assert_equal('<slnum>', expandcmd("<slnum>"))
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
124 :call assert_equal('<sflnum>', expandcmd("<sflnum>"))
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
125 :call assert_equal('edit <cfile>', expandcmd("edit <cfile>"))
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
126 :call assert_equal('edit #', expandcmd("edit #"))
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
127 :call assert_equal('edit #<2', expandcmd("edit #<2"))
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
128 :call assert_equal('edit <cword>', expandcmd("edit <cword>"))
2fd2ce8a556c patch 8.2.4667: expandcmd() fails on an error
Bram Moolenaar <Bram@vim.org>
parents: 26183
diff changeset
129 :call assert_equal('edit <cexpr>', expandcmd("edit <cexpr>"))
19425
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
130 :call assert_fails('autocmd User MyCmd echo "<sfile>"', 'E498:')
28431
4fbdd4ce9edb patch 8.2.4740: when expand() fails there is no error message
Bram Moolenaar <Bram@vim.org>
parents: 28403
diff changeset
131 :
4fbdd4ce9edb patch 8.2.4740: when expand() fails there is no error message
Bram Moolenaar <Bram@vim.org>
parents: 28403
diff changeset
132 :call assert_equal('', expand('<script>'))
4fbdd4ce9edb patch 8.2.4740: when expand() fails there is no error message
Bram Moolenaar <Bram@vim.org>
parents: 28403
diff changeset
133 :verbose echo expand('<script>')
4fbdd4ce9edb patch 8.2.4740: when expand() fails there is no error message
Bram Moolenaar <Bram@vim.org>
parents: 28403
diff changeset
134 :call add(v:errors, v:errmsg)
4fbdd4ce9edb patch 8.2.4740: when expand() fails there is no error message
Bram Moolenaar <Bram@vim.org>
parents: 28403
diff changeset
135 :verbose echo expand('<sfile>')
4fbdd4ce9edb patch 8.2.4740: when expand() fails there is no error message
Bram Moolenaar <Bram@vim.org>
parents: 28403
diff changeset
136 :call add(v:errors, v:errmsg)
19425
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
137 :call writefile(v:errors, 'Xresult')
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
138 :qall!
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
139 [SCRIPT]
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
140 call writefile(lines, 'Xscript')
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
141 if RunVim([], [], '--clean -s Xscript')
28431
4fbdd4ce9edb patch 8.2.4740: when expand() fails there is no error message
Bram Moolenaar <Bram@vim.org>
parents: 28403
diff changeset
142 call assert_equal([
4fbdd4ce9edb patch 8.2.4740: when expand() fails there is no error message
Bram Moolenaar <Bram@vim.org>
parents: 28403
diff changeset
143 \ 'E1274: No script file name to substitute for "<script>"',
4fbdd4ce9edb patch 8.2.4740: when expand() fails there is no error message
Bram Moolenaar <Bram@vim.org>
parents: 28403
diff changeset
144 \ 'E498: no :source file name to substitute for "<sfile>"'],
4fbdd4ce9edb patch 8.2.4740: when expand() fails there is no error message
Bram Moolenaar <Bram@vim.org>
parents: 28403
diff changeset
145 \ readfile('Xresult'))
19425
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
146 endif
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
147 call delete('Xscript')
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
148 call delete('Xresult')
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
149 endfunc
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
150
19471
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
151 " Test for expanding filenames multiple times in a command line
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
152 func Test_expand_filename_multicmd()
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
153 edit foo
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
154 call setline(1, 'foo!')
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
155 new
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
156 call setline(1, 'foo!')
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
157 new <cword> | new <cWORD>
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
158 call assert_equal(4, winnr('$'))
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
159 call assert_equal('foo!', bufname(winbufnr(1)))
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
160 call assert_equal('foo', bufname(winbufnr(2)))
19932
2c4d9ca33769 patch 8.2.0522: several errors are not tested for
Bram Moolenaar <Bram@vim.org>
parents: 19906
diff changeset
161 call assert_fails('e %:s/.*//', 'E500:')
19471
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
162 %bwipe!
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
163 endfunc
19425
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
164
26183
9865f996a3c0 patch 8.2.3623: "$*" is expanded to "nonomatch"
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
165 func Test_expandcmd_shell_nonomatch()
9865f996a3c0 patch 8.2.3623: "$*" is expanded to "nonomatch"
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
166 CheckNotMSWindows
9865f996a3c0 patch 8.2.3623: "$*" is expanded to "nonomatch"
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
167 call assert_equal('$*', expandcmd('$*'))
9865f996a3c0 patch 8.2.3623: "$*" is expanded to "nonomatch"
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
168 endfunc
9865f996a3c0 patch 8.2.3623: "$*" is expanded to "nonomatch"
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
169
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
170 func Test_expand_script_source()
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
171 let lines0 =<< trim [SCRIPT]
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
172 call extend(g:script_level, [expand('<script>:t')])
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
173 so Xscript1
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
174 func F0()
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
175 call extend(g:func_level, [expand('<script>:t')])
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
176 endfunc
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
177
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
178 au User * call extend(g:au_level, [expand('<script>:t')])
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
179 [SCRIPT]
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
180
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
181 let lines1 =<< trim [SCRIPT]
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
182 call extend(g:script_level, [expand('<script>:t')])
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
183 so Xscript2
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
184 func F1()
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
185 call extend(g:func_level, [expand('<script>:t')])
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
186 endfunc
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
187
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
188 au User * call extend(g:au_level, [expand('<script>:t')])
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
189 [SCRIPT]
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
190
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
191 let lines2 =<< trim [SCRIPT]
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
192 call extend(g:script_level, [expand('<script>:t')])
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
193 func F2()
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
194 call extend(g:func_level, [expand('<script>:t')])
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
195 endfunc
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
196
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
197 au User * call extend(g:au_level, [expand('<script>:t')])
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
198 [SCRIPT]
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
199
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
200 call writefile(lines0, 'Xscript0')
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
201 call writefile(lines1, 'Xscript1')
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
202 call writefile(lines2, 'Xscript2')
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
203
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
204 " Check the expansion of <script> at different levels.
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
205 let g:script_level = []
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
206 let g:func_level = []
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
207 let g:au_level = []
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
208
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
209 so Xscript0
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
210 call F0()
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
211 call F1()
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
212 call F2()
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
213 doautocmd User
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
214
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
215 call assert_equal(['Xscript0', 'Xscript1', 'Xscript2'], g:script_level)
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
216 call assert_equal(['Xscript0', 'Xscript1', 'Xscript2'], g:func_level)
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
217 call assert_equal(['Xscript2', 'Xscript1', 'Xscript0'], g:au_level)
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
218
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
219 unlet g:script_level g:func_level
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
220 delfunc F0
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
221 delfunc F1
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
222 delfunc F2
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
223
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
224 call delete('Xscript0')
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
225 call delete('Xscript1')
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
226 call delete('Xscript2')
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
227 endfunc
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
228
19425
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
229 " vim: shiftwidth=2 sts=2 expandtab