blob: 59b57c24448114fdd89f577d60a7e0b36a71d429 [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 Moolenaarabc70bb2016-06-08 21:48:50 +020012:"
Bram Moolenaar071d4272004-06-13 20:20:40 +000013:if has("unix")
14:let $CDIR = "."
15/CDIR
16:else
17:if has("amiga")
18:let $TDIR = "/testdir"
19:else
20:let $TDIR = "."
21:endif
22/TDIR
23:endif
Bram Moolenaard73895e2013-06-19 21:17:31 +020024:" Dummy writing for making that sure gf doesn't fail even if the current
25:" file is modified. It can be occurred when executing the following command
26:" directly on Windows without fixing the 'fileformat':
27:" > nmake -f Make_dos.mak test17.out
28:w! test.out
Bram Moolenaar071d4272004-06-13 20:20:40 +000029gf
Bram Moolenaarc84e3c12013-07-03 22:28:36 +020030:set ff=unix
Bram Moolenaar071d4272004-06-13 20:20:40 +000031:w! test.out
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020032:brewind
Bram Moolenaar071d4272004-06-13 20:20:40 +000033ENDTEST
34
35 ${CDIR}/test17a.in
36 $TDIR/test17a.in
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020037
38STARTTEST
39:" check for 'include' without \zs or \ze
40:lang C
Bram Moolenaard73895e2013-06-19 21:17:31 +020041:call delete("./Xbase.a")
Bram Moolenaarabc70bb2016-06-08 21:48:50 +020042:call delete("Xdir1", "rf")
Bram Moolenaard73895e2013-06-19 21:17:31 +020043:!mkdir Xdir1
44:!mkdir "Xdir1/dir2"
45:e! Xdir1/dir2/foo.a
Bram Moolenaar901e58c2015-08-11 18:33:48 +020046i#include "bar.a":
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020047:w
48:e Xdir1/dir2/bar.a
Bram Moolenaar901e58c2015-08-11 18:33:48 +020049i#include "baz.a":
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020050:w
51:e Xdir1/dir2/baz.a
Bram Moolenaar901e58c2015-08-11 18:33:48 +020052i#include "foo.a":
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020053:w
54:e Xbase.a
55:set path=Xdir1/dir2
Bram Moolenaar901e58c2015-08-11 18:33:48 +020056i#include <foo.a>:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020057:w
58:redir! >>test.out
59:checkpath!
60:redir END
61:brewind
62ENDTEST
63
64STARTTEST
65:" check for 'include' with \zs and \ze
Bram Moolenaard73895e2013-06-19 21:17:31 +020066:call delete("./Xbase.b")
Bram Moolenaarabc70bb2016-06-08 21:48:50 +020067:call delete("Xdir1", "rf")
Bram Moolenaard73895e2013-06-19 21:17:31 +020068:!mkdir Xdir1
69:!mkdir "Xdir1/dir2"
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020070:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
71:function! DotsToSlashes()
72: return substitute(v:fname, '\.', '/', 'g') . '.b'
73:endfunction
74:let &includeexpr='DotsToSlashes()'
Bram Moolenaard73895e2013-06-19 21:17:31 +020075:e! Xdir1/dir2/foo.b
Bram Moolenaar901e58c2015-08-11 18:33:48 +020076i%inc /bar/:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020077:w
78:e Xdir1/dir2/bar.b
Bram Moolenaar901e58c2015-08-11 18:33:48 +020079i%inc /baz/:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020080:w
81:e Xdir1/dir2/baz.b
Bram Moolenaar901e58c2015-08-11 18:33:48 +020082i%inc /foo/:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020083:w
84:e Xbase.b
85:set path=Xdir1/dir2
Bram Moolenaar901e58c2015-08-11 18:33:48 +020086i%inc /foo/:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +020087:w
88:redir! >>test.out
89:checkpath!
90:redir END
91:brewind
92ENDTEST
93
94STARTTEST
95:" check for 'include' with \zs and no \ze
Bram Moolenaard73895e2013-06-19 21:17:31 +020096:call delete("./Xbase.c")
Bram Moolenaarabc70bb2016-06-08 21:48:50 +020097:call delete("Xdir1", "rf")
Bram Moolenaard73895e2013-06-19 21:17:31 +020098:!mkdir Xdir1
99:!mkdir "Xdir1/dir2"
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200100:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
101:function! StripNewlineChar()
102: if v:fname =~ '\n$'
103: return v:fname[:-2]
104: endif
105: return v:fname
106:endfunction
107:let &includeexpr='StripNewlineChar()'
Bram Moolenaard73895e2013-06-19 21:17:31 +0200108:e! Xdir1/dir2/foo.c
Bram Moolenaar901e58c2015-08-11 18:33:48 +0200109i%inc bar.c:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200110:w
111:e Xdir1/dir2/bar.c
Bram Moolenaar901e58c2015-08-11 18:33:48 +0200112i%inc baz.c:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200113:w
114:e Xdir1/dir2/baz.c
Bram Moolenaar901e58c2015-08-11 18:33:48 +0200115i%inc foo.c:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200116:w
117:e Xdir1/dir2/FALSE.c
Bram Moolenaar901e58c2015-08-11 18:33:48 +0200118i%inc foo.c:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200119:w
120:e Xbase.c
121:set path=Xdir1/dir2
Bram Moolenaar901e58c2015-08-11 18:33:48 +0200122i%inc FALSE.c foo.c:
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200123:w
124:redir! >>test.out
125:checkpath!
126:redir END
127:brewind
Bram Moolenaarc84e3c12013-07-03 22:28:36 +0200128:" change "\" to "/" for Windows and fix 'fileformat'
Bram Moolenaard73895e2013-06-19 21:17:31 +0200129:e test.out
130:%s#\\#/#g
Bram Moolenaarc84e3c12013-07-03 22:28:36 +0200131:set ff&
Bram Moolenaard73895e2013-06-19 21:17:31 +0200132:w
Bram Moolenaar058bdcf2012-07-25 13:46:30 +0200133:q
134ENDTEST
135