123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- " Tests for the :checkpath command
- " Test for 'include' without \zs or \ze
- func Test_checkpath1()
- call mkdir("Xdir1/dir2", "p")
- call writefile(['#include "bar.a"'], 'Xdir1/dir2/foo.a')
- call writefile(['#include "baz.a"'], 'Xdir1/dir2/bar.a')
- call writefile(['#include "foo.a"'], 'Xdir1/dir2/baz.a')
- call writefile(['#include <foo.a>'], 'Xbase.a')
- edit Xbase.a
- set path=Xdir1/dir2
- let res = split(execute("checkpath!"), "\n")
- call assert_equal([
- \ '--- Included files in path ---',
- \ 'Xdir1/dir2/foo.a',
- \ 'Xdir1/dir2/foo.a -->',
- \ ' Xdir1/dir2/bar.a',
- \ ' Xdir1/dir2/bar.a -->',
- \ ' Xdir1/dir2/baz.a',
- \ ' Xdir1/dir2/baz.a -->',
- \ ' "foo.a" (Already listed)'], res)
- enew
- call delete("./Xbase.a")
- call delete("Xdir1", "rf")
- set path&
- endfunc
- func DotsToSlashes()
- return substitute(v:fname, '\.', '/', 'g') . '.b'
- endfunc
- " Test for 'include' with \zs and \ze
- func Test_checkpath2()
- call mkdir("Xdir1/dir2", "p")
- call writefile(['%inc /bar/'], 'Xdir1/dir2/foo.b')
- call writefile(['%inc /baz/'], 'Xdir1/dir2/bar.b')
- call writefile(['%inc /foo/'], 'Xdir1/dir2/baz.b')
- call writefile(['%inc /foo/'], 'Xbase.b')
- let &include='^\s*%inc\s*/\zs[^/]\+\ze'
- let &includeexpr='DotsToSlashes()'
- edit Xbase.b
- set path=Xdir1/dir2
- let res = split(execute("checkpath!"), "\n")
- call assert_equal([
- \ '--- Included files in path ---',
- \ 'Xdir1/dir2/foo.b',
- \ 'Xdir1/dir2/foo.b -->',
- \ ' Xdir1/dir2/bar.b',
- \ ' Xdir1/dir2/bar.b -->',
- \ ' Xdir1/dir2/baz.b',
- \ ' Xdir1/dir2/baz.b -->',
- \ ' foo (Already listed)'], res)
- enew
- call delete("./Xbase.b")
- call delete("Xdir1", "rf")
- set path&
- set include&
- set includeexpr&
- endfunc
- func StripNewlineChar()
- if v:fname =~ '\n$'
- return v:fname[:-2]
- endif
- return v:fname
- endfunc
- " Test for 'include' with \zs and no \ze
- func Test_checkpath3()
- call mkdir("Xdir1/dir2", "p")
- call writefile(['%inc bar.c'], 'Xdir1/dir2/foo.c')
- call writefile(['%inc baz.c'], 'Xdir1/dir2/bar.c')
- call writefile(['%inc foo.c'], 'Xdir1/dir2/baz.c')
- call writefile(['%inc foo.c'], 'Xdir1/dir2/FALSE.c')
- call writefile(['%inc FALSE.c foo.c'], 'Xbase.c')
- let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
- let &includeexpr='StripNewlineChar()'
- edit Xbase.c
- set path=Xdir1/dir2
- let res = split(execute("checkpath!"), "\n")
- call assert_equal([
- \ '--- Included files in path ---',
- \ 'Xdir1/dir2/foo.c',
- \ 'Xdir1/dir2/foo.c -->',
- \ ' Xdir1/dir2/bar.c',
- \ ' Xdir1/dir2/bar.c -->',
- \ ' Xdir1/dir2/baz.c',
- \ ' Xdir1/dir2/baz.c -->',
- \ ' foo.c (Already listed)'], res)
- enew
- call delete("./Xbase.c")
- call delete("Xdir1", "rf")
- set path&
- set include&
- set includeexpr&
- endfunc
- " Test for invalid regex in 'include' and 'define' options
- func Test_checkpath_errors()
- let save_include = &include
- set include=\\%(
- call assert_fails('checkpath', 'E53:')
- let &include = save_include
- let save_define = &define
- set define=\\%(
- call assert_fails('dsearch abc', 'E53:')
- let &define = save_define
- call assert_fails('psearch \%(', 'E53:')
- endfunc
- " vim: shiftwidth=2 sts=2 expandtab
|