Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 1 | Tests for: |
| 2 | - "gf" on ${VAR}, |
| 3 | - ":checkpath!" with various 'include' settings. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 4 | |
| 5 | STARTTEST |
| 6 | :so small.vim |
| 7 | :if has("ebcdic") |
| 8 | : set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,} |
| 9 | :else |
| 10 | : set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,} |
| 11 | :endif |
Bram Moolenaar | d73895e | 2013-06-19 21:17:31 +0200 | [diff] [blame] | 12 | :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 Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 19 | :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 Moolenaar | d73895e | 2013-06-19 21:17:31 +0200 | [diff] [blame] | 30 | :" 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 Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 35 | gf |
Bram Moolenaar | c84e3c1 | 2013-07-03 22:28:36 +0200 | [diff] [blame] | 36 | :set ff=unix |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 37 | :w! test.out |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 38 | :brewind |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 39 | ENDTEST |
| 40 | |
| 41 | ${CDIR}/test17a.in |
| 42 | $TDIR/test17a.in |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 43 | |
| 44 | STARTTEST |
| 45 | :" check for 'include' without \zs or \ze |
| 46 | :lang C |
Bram Moolenaar | d73895e | 2013-06-19 21:17:31 +0200 | [diff] [blame] | 47 | :call delete("./Xbase.a") |
| 48 | :call DeleteDirectory("Xdir1") |
| 49 | :!mkdir Xdir1 |
| 50 | :!mkdir "Xdir1/dir2" |
| 51 | :e! Xdir1/dir2/foo.a |
Bram Moolenaar | 901e58c | 2015-08-11 18:33:48 +0200 | [diff] [blame^] | 52 | i#include "bar.a": |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 53 | :w |
| 54 | :e Xdir1/dir2/bar.a |
Bram Moolenaar | 901e58c | 2015-08-11 18:33:48 +0200 | [diff] [blame^] | 55 | i#include "baz.a": |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 56 | :w |
| 57 | :e Xdir1/dir2/baz.a |
Bram Moolenaar | 901e58c | 2015-08-11 18:33:48 +0200 | [diff] [blame^] | 58 | i#include "foo.a": |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 59 | :w |
| 60 | :e Xbase.a |
| 61 | :set path=Xdir1/dir2 |
Bram Moolenaar | 901e58c | 2015-08-11 18:33:48 +0200 | [diff] [blame^] | 62 | i#include <foo.a>: |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 63 | :w |
| 64 | :redir! >>test.out |
| 65 | :checkpath! |
| 66 | :redir END |
| 67 | :brewind |
| 68 | ENDTEST |
| 69 | |
| 70 | STARTTEST |
| 71 | :" check for 'include' with \zs and \ze |
Bram Moolenaar | d73895e | 2013-06-19 21:17:31 +0200 | [diff] [blame] | 72 | :call delete("./Xbase.b") |
| 73 | :call DeleteDirectory("Xdir1") |
| 74 | :!mkdir Xdir1 |
| 75 | :!mkdir "Xdir1/dir2" |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 76 | :let &include='^\s*%inc\s*/\zs[^/]\+\ze' |
| 77 | :function! DotsToSlashes() |
| 78 | : return substitute(v:fname, '\.', '/', 'g') . '.b' |
| 79 | :endfunction |
| 80 | :let &includeexpr='DotsToSlashes()' |
Bram Moolenaar | d73895e | 2013-06-19 21:17:31 +0200 | [diff] [blame] | 81 | :e! Xdir1/dir2/foo.b |
Bram Moolenaar | 901e58c | 2015-08-11 18:33:48 +0200 | [diff] [blame^] | 82 | i%inc /bar/: |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 83 | :w |
| 84 | :e Xdir1/dir2/bar.b |
Bram Moolenaar | 901e58c | 2015-08-11 18:33:48 +0200 | [diff] [blame^] | 85 | i%inc /baz/: |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 86 | :w |
| 87 | :e Xdir1/dir2/baz.b |
Bram Moolenaar | 901e58c | 2015-08-11 18:33:48 +0200 | [diff] [blame^] | 88 | i%inc /foo/: |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 89 | :w |
| 90 | :e Xbase.b |
| 91 | :set path=Xdir1/dir2 |
Bram Moolenaar | 901e58c | 2015-08-11 18:33:48 +0200 | [diff] [blame^] | 92 | i%inc /foo/: |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 93 | :w |
| 94 | :redir! >>test.out |
| 95 | :checkpath! |
| 96 | :redir END |
| 97 | :brewind |
| 98 | ENDTEST |
| 99 | |
| 100 | STARTTEST |
| 101 | :" check for 'include' with \zs and no \ze |
Bram Moolenaar | d73895e | 2013-06-19 21:17:31 +0200 | [diff] [blame] | 102 | :call delete("./Xbase.c") |
| 103 | :call DeleteDirectory("Xdir1") |
| 104 | :!mkdir Xdir1 |
| 105 | :!mkdir "Xdir1/dir2" |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 106 | :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 Moolenaar | d73895e | 2013-06-19 21:17:31 +0200 | [diff] [blame] | 114 | :e! Xdir1/dir2/foo.c |
Bram Moolenaar | 901e58c | 2015-08-11 18:33:48 +0200 | [diff] [blame^] | 115 | i%inc bar.c: |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 116 | :w |
| 117 | :e Xdir1/dir2/bar.c |
Bram Moolenaar | 901e58c | 2015-08-11 18:33:48 +0200 | [diff] [blame^] | 118 | i%inc baz.c: |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 119 | :w |
| 120 | :e Xdir1/dir2/baz.c |
Bram Moolenaar | 901e58c | 2015-08-11 18:33:48 +0200 | [diff] [blame^] | 121 | i%inc foo.c: |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 122 | :w |
| 123 | :e Xdir1/dir2/FALSE.c |
Bram Moolenaar | 901e58c | 2015-08-11 18:33:48 +0200 | [diff] [blame^] | 124 | i%inc foo.c: |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 125 | :w |
| 126 | :e Xbase.c |
| 127 | :set path=Xdir1/dir2 |
Bram Moolenaar | 901e58c | 2015-08-11 18:33:48 +0200 | [diff] [blame^] | 128 | i%inc FALSE.c foo.c: |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 129 | :w |
| 130 | :redir! >>test.out |
| 131 | :checkpath! |
| 132 | :redir END |
| 133 | :brewind |
Bram Moolenaar | c84e3c1 | 2013-07-03 22:28:36 +0200 | [diff] [blame] | 134 | :" change "\" to "/" for Windows and fix 'fileformat' |
Bram Moolenaar | d73895e | 2013-06-19 21:17:31 +0200 | [diff] [blame] | 135 | :e test.out |
| 136 | :%s#\\#/#g |
Bram Moolenaar | c84e3c1 | 2013-07-03 22:28:36 +0200 | [diff] [blame] | 137 | :set ff& |
Bram Moolenaar | d73895e | 2013-06-19 21:17:31 +0200 | [diff] [blame] | 138 | :w |
Bram Moolenaar | 058bdcf | 2012-07-25 13:46:30 +0200 | [diff] [blame] | 139 | :q |
| 140 | ENDTEST |
| 141 | |