blob: 9bc1d02270900daeef6ad8c10e37502e9441ccb2 [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
36:w! test.out
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020037:brewind
Bram Moolenaar071d4272004-06-13 20:20:40 +000038ENDTEST
39
40 ${CDIR}/test17a.in
41 $TDIR/test17a.in
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020042
43STARTTEST
44:" check for 'include' without \zs or \ze
45:lang C
Bram Moolenaard73895e2013-06-19 21:17:31 +020046:call delete("./Xbase.a")
47:call DeleteDirectory("Xdir1")
48:!mkdir Xdir1
49:!mkdir "Xdir1/dir2"
50:e! Xdir1/dir2/foo.a
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020051i#include "bar.a"
52:w
53:e Xdir1/dir2/bar.a
54i#include "baz.a"
55:w
56:e Xdir1/dir2/baz.a
57i#include "foo.a"
58:w
59:e Xbase.a
60:set path=Xdir1/dir2
61i#include <foo.a>
62:w
63:redir! >>test.out
64:checkpath!
65:redir END
66:brewind
67ENDTEST
68
69STARTTEST
70:" check for 'include' with \zs and \ze
Bram Moolenaard73895e2013-06-19 21:17:31 +020071:call delete("./Xbase.b")
72:call DeleteDirectory("Xdir1")
73:!mkdir Xdir1
74:!mkdir "Xdir1/dir2"
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020075:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
76:function! DotsToSlashes()
77: return substitute(v:fname, '\.', '/', 'g') . '.b'
78:endfunction
79:let &includeexpr='DotsToSlashes()'
Bram Moolenaard73895e2013-06-19 21:17:31 +020080:e! Xdir1/dir2/foo.b
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020081i%inc /bar/
82:w
83:e Xdir1/dir2/bar.b
84i%inc /baz/
85:w
86:e Xdir1/dir2/baz.b
87i%inc /foo/
88:w
89:e Xbase.b
90:set path=Xdir1/dir2
91i%inc /foo/
92:w
93:redir! >>test.out
94:checkpath!
95:redir END
96:brewind
97ENDTEST
98
99STARTTEST
100:" check for 'include' with \zs and no \ze
Bram Moolenaard73895e2013-06-19 21:17:31 +0200101:call delete("./Xbase.c")
102:call DeleteDirectory("Xdir1")
103:!mkdir Xdir1
104:!mkdir "Xdir1/dir2"
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200105:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
106:function! StripNewlineChar()
107: if v:fname =~ '\n$'
108: return v:fname[:-2]
109: endif
110: return v:fname
111:endfunction
112:let &includeexpr='StripNewlineChar()'
Bram Moolenaard73895e2013-06-19 21:17:31 +0200113:e! Xdir1/dir2/foo.c
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200114i%inc bar.c
115:w
116:e Xdir1/dir2/bar.c
117i%inc baz.c
118:w
119:e Xdir1/dir2/baz.c
120i%inc foo.c
121:w
122:e Xdir1/dir2/FALSE.c
123i%inc foo.c
124:w
125:e Xbase.c
126:set path=Xdir1/dir2
127i%inc FALSE.c foo.c
128:w
129:redir! >>test.out
130:checkpath!
131:redir END
132:brewind
Bram Moolenaard73895e2013-06-19 21:17:31 +0200133:" replace "\" to "/" for Windows
134:e test.out
135:%s#\\#/#g
136:w
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200137:q
138ENDTEST
139