blob: 3a0a9bbb79d3395994d3c97663a72ec84474ac37 [file] [log] [blame]
Bram Moolenaar058bdcf2012-07-25 13:46:30 +02001Tests for:
2- "gf" on ${VAR},
3- ":checkpath!" with various 'include' settings.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004
5STARTTEST
6:so small.vim
7:if has("ebcdic")
8: set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}
9:else
10: set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}
11:endif
Bram Moolenaard73895e2013-06-19 21:17:31 +020012:function! DeleteDirectory(dir)
13: if has("win16") || has("win32") || has("win64") || has("dos16") || has("dos32")
14: exec "silent !rmdir /Q /S " . a:dir
15: else
16: exec "silent !rm -rf " . a:dir
17: endif
18:endfun
Bram Moolenaar071d4272004-06-13 20:20:40 +000019:if has("unix")
20:let $CDIR = "."
21/CDIR
22:else
23:if has("amiga")
24:let $TDIR = "/testdir"
25:else
26:let $TDIR = "."
27:endif
28/TDIR
29:endif
Bram Moolenaard73895e2013-06-19 21:17:31 +020030:" Dummy writing for making that sure gf doesn't fail even if the current
31:" file is modified. It can be occurred when executing the following command
32:" directly on Windows without fixing the 'fileformat':
33:" > nmake -f Make_dos.mak test17.out
34:w! test.out
Bram Moolenaar071d4272004-06-13 20:20:40 +000035gf
Bram Moolenaarc84e3c12013-07-03 22:28:36 +020036:set ff=unix
Bram Moolenaar071d4272004-06-13 20:20:40 +000037:w! test.out
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020038:brewind
Bram Moolenaar071d4272004-06-13 20:20:40 +000039ENDTEST
40
41 ${CDIR}/test17a.in
42 $TDIR/test17a.in
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020043
44STARTTEST
45:" check for 'include' without \zs or \ze
46:lang C
Bram Moolenaard73895e2013-06-19 21:17:31 +020047:call delete("./Xbase.a")
48:call DeleteDirectory("Xdir1")
49:!mkdir Xdir1
50:!mkdir "Xdir1/dir2"
51:e! Xdir1/dir2/foo.a
Bram Moolenaar901e58c2015-08-11 18:33:48 +020052i#include "bar.a":
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020053:w
54:e Xdir1/dir2/bar.a
Bram Moolenaar901e58c2015-08-11 18:33:48 +020055i#include "baz.a":
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020056:w
57:e Xdir1/dir2/baz.a
Bram Moolenaar901e58c2015-08-11 18:33:48 +020058i#include "foo.a":
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020059:w
60:e Xbase.a
61:set path=Xdir1/dir2
Bram Moolenaar901e58c2015-08-11 18:33:48 +020062i#include <foo.a>:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020063:w
64:redir! >>test.out
65:checkpath!
66:redir END
67:brewind
68ENDTEST
69
70STARTTEST
71:" check for 'include' with \zs and \ze
Bram Moolenaard73895e2013-06-19 21:17:31 +020072:call delete("./Xbase.b")
73:call DeleteDirectory("Xdir1")
74:!mkdir Xdir1
75:!mkdir "Xdir1/dir2"
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020076:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
77:function! DotsToSlashes()
78: return substitute(v:fname, '\.', '/', 'g') . '.b'
79:endfunction
80:let &includeexpr='DotsToSlashes()'
Bram Moolenaard73895e2013-06-19 21:17:31 +020081:e! Xdir1/dir2/foo.b
Bram Moolenaar901e58c2015-08-11 18:33:48 +020082i%inc /bar/:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020083:w
84:e Xdir1/dir2/bar.b
Bram Moolenaar901e58c2015-08-11 18:33:48 +020085i%inc /baz/:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020086:w
87:e Xdir1/dir2/baz.b
Bram Moolenaar901e58c2015-08-11 18:33:48 +020088i%inc /foo/:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020089:w
90:e Xbase.b
91:set path=Xdir1/dir2
Bram Moolenaar901e58c2015-08-11 18:33:48 +020092i%inc /foo/:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020093:w
94:redir! >>test.out
95:checkpath!
96:redir END
97:brewind
98ENDTEST
99
100STARTTEST
101:" check for 'include' with \zs and no \ze
Bram Moolenaard73895e2013-06-19 21:17:31 +0200102:call delete("./Xbase.c")
103:call DeleteDirectory("Xdir1")
104:!mkdir Xdir1
105:!mkdir "Xdir1/dir2"
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200106:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
107:function! StripNewlineChar()
108: if v:fname =~ '\n$'
109: return v:fname[:-2]
110: endif
111: return v:fname
112:endfunction
113:let &includeexpr='StripNewlineChar()'
Bram Moolenaard73895e2013-06-19 21:17:31 +0200114:e! Xdir1/dir2/foo.c
Bram Moolenaar901e58c2015-08-11 18:33:48 +0200115i%inc bar.c:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200116:w
117:e Xdir1/dir2/bar.c
Bram Moolenaar901e58c2015-08-11 18:33:48 +0200118i%inc baz.c:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200119:w
120:e Xdir1/dir2/baz.c
Bram Moolenaar901e58c2015-08-11 18:33:48 +0200121i%inc foo.c:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200122:w
123:e Xdir1/dir2/FALSE.c
Bram Moolenaar901e58c2015-08-11 18:33:48 +0200124i%inc foo.c:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200125:w
126:e Xbase.c
127:set path=Xdir1/dir2
Bram Moolenaar901e58c2015-08-11 18:33:48 +0200128i%inc FALSE.c foo.c:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200129:w
130:redir! >>test.out
131:checkpath!
132:redir END
133:brewind
Bram Moolenaarc84e3c12013-07-03 22:28:36 +0200134:" change "\" to "/" for Windows and fix 'fileformat'
Bram Moolenaard73895e2013-06-19 21:17:31 +0200135:e test.out
136:%s#\\#/#g
Bram Moolenaarc84e3c12013-07-03 22:28:36 +0200137:set ff&
Bram Moolenaard73895e2013-06-19 21:17:31 +0200138:w
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200139:q
140ENDTEST
141