1" Tests for the :checkpath command 2 3" Test for 'include' without \zs or \ze 4func Test_checkpath1() 5 call mkdir("Xdir1/dir2", "p") 6 call writefile(['#include "bar.a"'], 'Xdir1/dir2/foo.a') 7 call writefile(['#include "baz.a"'], 'Xdir1/dir2/bar.a') 8 call writefile(['#include "foo.a"'], 'Xdir1/dir2/baz.a') 9 call writefile(['#include <foo.a>'], 'Xbase.a') 10 11 edit Xbase.a 12 set path=Xdir1/dir2 13 let res = split(execute("checkpath!"), "\n") 14 call assert_equal([ 15 \ '--- Included files in path ---', 16 \ 'Xdir1/dir2/foo.a', 17 \ 'Xdir1/dir2/foo.a -->', 18 \ ' Xdir1/dir2/bar.a', 19 \ ' Xdir1/dir2/bar.a -->', 20 \ ' Xdir1/dir2/baz.a', 21 \ ' Xdir1/dir2/baz.a -->', 22 \ ' "foo.a" (Already listed)'], res) 23 24 enew 25 call delete("./Xbase.a") 26 call delete("Xdir1", "rf") 27 set path& 28endfunc 29 30func DotsToSlashes() 31 return substitute(v:fname, '\.', '/', 'g') . '.b' 32endfunc 33 34" Test for 'include' with \zs and \ze 35func Test_checkpath2() 36 call mkdir("Xdir1/dir2", "p") 37 call writefile(['%inc /bar/'], 'Xdir1/dir2/foo.b') 38 call writefile(['%inc /baz/'], 'Xdir1/dir2/bar.b') 39 call writefile(['%inc /foo/'], 'Xdir1/dir2/baz.b') 40 call writefile(['%inc /foo/'], 'Xbase.b') 41 42 let &include='^\s*%inc\s*/\zs[^/]\+\ze' 43 let &includeexpr='DotsToSlashes()' 44 45 edit Xbase.b 46 set path=Xdir1/dir2 47 let res = split(execute("checkpath!"), "\n") 48 call assert_equal([ 49 \ '--- Included files in path ---', 50 \ 'Xdir1/dir2/foo.b', 51 \ 'Xdir1/dir2/foo.b -->', 52 \ ' Xdir1/dir2/bar.b', 53 \ ' Xdir1/dir2/bar.b -->', 54 \ ' Xdir1/dir2/baz.b', 55 \ ' Xdir1/dir2/baz.b -->', 56 \ ' foo (Already listed)'], res) 57 58 enew 59 call delete("./Xbase.b") 60 call delete("Xdir1", "rf") 61 set path& 62 set include& 63 set includeexpr& 64endfunc 65 66func StripNewlineChar() 67 if v:fname =~ '\n$' 68 return v:fname[:-2] 69 endif 70 return v:fname 71endfunc 72 73" Test for 'include' with \zs and no \ze 74func Test_checkpath3() 75 call mkdir("Xdir1/dir2", "p") 76 call writefile(['%inc bar.c'], 'Xdir1/dir2/foo.c') 77 call writefile(['%inc baz.c'], 'Xdir1/dir2/bar.c') 78 call writefile(['%inc foo.c'], 'Xdir1/dir2/baz.c') 79 call writefile(['%inc foo.c'], 'Xdir1/dir2/FALSE.c') 80 call writefile(['%inc FALSE.c foo.c'], 'Xbase.c') 81 82 let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze' 83 let &includeexpr='StripNewlineChar()' 84 85 edit Xbase.c 86 set path=Xdir1/dir2 87 let res = split(execute("checkpath!"), "\n") 88 call assert_equal([ 89 \ '--- Included files in path ---', 90 \ 'Xdir1/dir2/foo.c', 91 \ 'Xdir1/dir2/foo.c -->', 92 \ ' Xdir1/dir2/bar.c', 93 \ ' Xdir1/dir2/bar.c -->', 94 \ ' Xdir1/dir2/baz.c', 95 \ ' Xdir1/dir2/baz.c -->', 96 \ ' foo.c (Already listed)'], res) 97 98 enew 99 call delete("./Xbase.c") 100 call delete("Xdir1", "rf") 101 set path& 102 set include& 103 set includeexpr& 104endfunc 105