patch 9.1.0763: tests: cannot run single syntax tests
Problem: tests: cannot run single syntax tests
Solution: Support running a subset of syntax tests
(Aliaksei Budavei)
Two methods of assembling a subset of test filenames for
selection are provided:
* Filename and filetype Make targets will be generated, and
multiple such targets can be passed before the mandated
trailing "test" target, e.g. "make html markdown test".
* Filenames and their parts can be specified as a regular
expression that is assigned to a "VIM_SYNTAX_TEST_FILTER"
environment variable, and used with the test Make target,
e.g. "VIM_SYNTAX_TEST_FILTER=html\\\|markdown make test".
(This variable will be ignored and the whole suite will be
run when Make is GNU Make and a parent Makefile is used.)
Methods can be used alone or together, with the Make targets
having the higher precedence. Neither method will influence
the order of test execution.
closes: #15670
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
a9c6f90918
commit
ec0229414b
@ -115,13 +115,26 @@ func RunTest()
|
||||
" Create a map of setup configuration filenames with their basenames as keys.
|
||||
let setup = glob('input/setup/*.vim', 1, 1)
|
||||
\ ->reduce({d, f -> extend(d, {fnamemodify(f, ':t:r'): f})}, {})
|
||||
" Turn a subset of filenames etc. requested for testing into a pattern.
|
||||
let filter = filereadable('../testdir/Xfilter')
|
||||
\ ? readfile('../testdir/Xfilter')
|
||||
\ ->map({_, v -> (v =~ '\.' ? '^' : '\.') .. v .. '$'})
|
||||
\ ->join('\|')
|
||||
\ : ''
|
||||
|
||||
if exists("$VIM_SYNTAX_SELF_TESTING")
|
||||
" Treat "\.self-testing$" as a string NOT as a regexp.
|
||||
if filter ==# '\.self-testing$'
|
||||
let dirpath = 'input/selftestdir/'
|
||||
let fnames = readdir(dirpath, {fname -> fname !~ '^README\.txt$'})
|
||||
else
|
||||
let dirpath = 'input/'
|
||||
let fnames = readdir(dirpath, {fname -> fname !~ '\~$' && fname =~ '^.\+\..\+$'})
|
||||
let filter ..= exists("$VIM_SYNTAX_TEST_FILTER") &&
|
||||
\ !empty($VIM_SYNTAX_TEST_FILTER)
|
||||
\ ? (empty(filter) ? '' : '\|') .. $VIM_SYNTAX_TEST_FILTER
|
||||
\ : ''
|
||||
let fnames = readdir(dirpath,
|
||||
\ {subset -> {fname -> fname !~ '\~$' && fname =~# subset}}(
|
||||
\ empty(filter) ? '^.\+\..\+$' : filter))
|
||||
endif
|
||||
|
||||
for fname in fnames
|
||||
|
||||
Reference in New Issue
Block a user