annotate src/testdir/test_expand.vim @ 33988:7c30841c60a0 v9.0.2180

patch 9.0.2180: POSIX function name in exarg causes issues Commit: https://github.com/vim/vim/commit/6fdb6280821a822768df5689a5d727e37d38306c Author: Zoltan Arpadffy <zoltan.arpadffy@gmail.com> Date: Tue Dec 19 20:53:07 2023 +0100 patch 9.0.2180: POSIX function name in exarg causes issues Problem: POSIX function name in exarg struct causes issues on OpenVMS Solution: Rename getline member in exarg struct to ea_getline, remove isinf() workaround for VMS There are compilers that do not treat well POSIX functions - like getline - usage in the structs. Older VMS compilers could digest this... but the newer OpenVMS compilers ( like VSI C x86-64 X7.4-843 (GEM 50XB9) ) cannot deal with these structs. This could be limited to getline() that is defined via getdelim() and might not affect all POSIX functions in general - but avoiding POSIX function names usage in the structs is a "safe side" practice without compromising the functionality or the code readability. The previous OpenVMS X86 port used a workaround limiting the compiler capabilities using __CRTL_VER_OVERRIDE=80400000 In order to make the OpenVMS port future proof, this pull request proposes a possible solution. closes: #13704 Signed-off-by: Zoltan Arpadffy <zoltan.arpadffy@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Tue, 19 Dec 2023 21:00:04 +0100
parents dbec60b8c253
children 5397ce113043
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 ~
31849
dbec60b8c253 patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents: 30405
diff changeset
48 call assert_equal('~', expand('%'))
14393
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('~/'))
31849
dbec60b8c253 patch 9.0.1257: code style is not check in test scripts
Bram Moolenaar <Bram@vim.org>
parents: 30405
diff changeset
50 call assert_match('\~', expand('%:p'))
14393
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
30051
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
60 edit Xpandfile1
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
61 call assert_equal('e Xpandfile1', expandcmd('e %'))
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
62 edit Xpandfile2
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
63 edit Xpandfile1
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
64 call assert_equal('e Xpandfile2', 'e #'->expandcmd())
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
65 edit Xpandfile2
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
66 edit Xpandfile3
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
67 edit Xpandfile4
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
68 let bnum = bufnr('Xpandfile2')
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
69 call assert_equal('e Xpandfile2', expandcmd('e #' . bnum))
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
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!
30051
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
74 edit Xpandfile.java
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
75 call assert_equal('e Xpandfile.py', expandcmd('e %:r.py'))
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
76 call assert_equal('make abc.java', expandcmd('make abc.%:e'))
30051
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
77 call assert_equal('make Xabc.java', expandcmd('make %:s?pandfile?abc?'))
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
78 edit a1a2a3.rb
30051
13b02c1ea0f7 patch 9.0.0363: common names in test files causes tests to be flaky
Bram Moolenaar <Bram@vim.org>
parents: 28735
diff changeset
79 call assert_equal('make b1b2b3.rb a1a2a3 Xpandfile.o', expandcmd('make %:gs?a?b? %< #<.o'))
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
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]
30405
ea38db8639eb patch 9.0.0538: manually deleting test temp files
Bram Moolenaar <Bram@vim.org>
parents: 30051
diff changeset
140 call writefile(lines, 'Xscript', 'D')
19425
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>"',
28735
c428a4e53b9c patch 8.2.4892: test failures because of changed error messages
Bram Moolenaar <Bram@vim.org>
parents: 28449
diff changeset
144 \ 'E498: No :source file name to substitute for "<sfile>"'],
28431
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('Xresult')
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
148 endfunc
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
149
19471
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
150 " 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
151 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
152 edit foo
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
153 call setline(1, 'foo!')
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
154 new
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
155 call setline(1, 'foo!')
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
156 new <cword> | new <cWORD>
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
157 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
158 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
159 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
160 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
161 %bwipe!
cb73f4ae6b7c patch 8.2.0293: various Ex commands not sufficiently tested
Bram Moolenaar <Bram@vim.org>
parents: 19425
diff changeset
162 endfunc
19425
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
163
26183
9865f996a3c0 patch 8.2.3623: "$*" is expanded to "nonomatch"
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
164 func Test_expandcmd_shell_nonomatch()
9865f996a3c0 patch 8.2.3623: "$*" is expanded to "nonomatch"
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
165 CheckNotMSWindows
9865f996a3c0 patch 8.2.3623: "$*" is expanded to "nonomatch"
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
166 call assert_equal('$*', expandcmd('$*'))
9865f996a3c0 patch 8.2.3623: "$*" is expanded to "nonomatch"
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
167 endfunc
9865f996a3c0 patch 8.2.3623: "$*" is expanded to "nonomatch"
Bram Moolenaar <Bram@vim.org>
parents: 19932
diff changeset
168
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
169 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
170 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
171 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
172 so Xscript1
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
173 func F0()
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
174 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
175 endfunc
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
176
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
177 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
178 [SCRIPT]
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
179
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
180 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
181 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
182 so Xscript2
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
183 func F1()
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
184 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
185 endfunc
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
186
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
187 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
188 [SCRIPT]
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
189
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
190 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
191 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
192 func F2()
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
193 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
194 endfunc
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
195
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
196 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
197 [SCRIPT]
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
198
30405
ea38db8639eb patch 9.0.0538: manually deleting test temp files
Bram Moolenaar <Bram@vim.org>
parents: 30051
diff changeset
199 call writefile(lines0, 'Xscript0', 'D')
ea38db8639eb patch 9.0.0538: manually deleting test temp files
Bram Moolenaar <Bram@vim.org>
parents: 30051
diff changeset
200 call writefile(lines1, 'Xscript1', 'D')
ea38db8639eb patch 9.0.0538: manually deleting test temp files
Bram Moolenaar <Bram@vim.org>
parents: 30051
diff changeset
201 call writefile(lines2, 'Xscript2', 'D')
28403
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
202
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
203 " 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
204 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
205 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
206 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
207
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
208 so Xscript0
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
209 call F0()
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
210 call F1()
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
211 call F2()
28449
80ed5ad30d28 patch 8.2.4749: <script> is not expanded in autocmd context
Bram Moolenaar <Bram@vim.org>
parents: 28431
diff changeset
212 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
213
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
214 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
215 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
216 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
217
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
218 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
219 delfunc F0
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
220 delfunc F1
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
221 delfunc F2
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
222 endfunc
2655935b5ccc patch 8.2.4726: cannot use expand() to get the script name
Bram Moolenaar <Bram@vim.org>
parents: 28307
diff changeset
223
19425
67fbe280a502 patch 8.2.0270: some code not covered by tests
Bram Moolenaar <Bram@vim.org>
parents: 18568
diff changeset
224 " vim: shiftwidth=2 sts=2 expandtab