Mercurial > vim
changeset 18184:ef35a3a70c24 v8.1.2087
patch 8.1.2087: cannot easily select one test function to execute
Commit: https://github.com/vim/vim/commit/a7f6c3cf071bb6267e0bd2eb3d27ca240381ba87
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Sep 27 15:34:16 2019 +0200
patch 8.1.2087: cannot easily select one test function to execute
Problem: Cannot easily select one test function to execute.
Solution: Support the $TEST_FILTER environment variable. (Ozaki Kiichi,
closes #2695)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 27 Sep 2019 16:00:45 +0200 |
parents | 6ebaf89b7a05 |
children | 75f204e14e28 |
files | src/Makefile src/testdir/runtest.vim src/testdir/summarize.vim src/version.c |
diffstat | 4 files changed, 17 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/Makefile +++ b/src/Makefile @@ -2262,6 +2262,10 @@ test1 \ # Run individual NEW style test. # These do not depend on the executable, compile it when needed. +# Set $TEST_FILTER to select what test function to invoke, e.g.: +# export TEST_FILTER=Test_terminal_wipe_buffer +# A partial match also works: +# export TEST_FILTER=wipe_buffer $(NEW_TESTS): cd testdir; $(MAKE) $@ VIMPROG=../$(VIMTESTTARGET) $(GUI_TESTARG) SCRIPTSOURCE=../$(SCRIPTSOURCE)
--- a/src/testdir/runtest.vim +++ b/src/testdir/runtest.vim @@ -384,6 +384,12 @@ if argc() > 1 let s:tests = filter(s:tests, 'v:val =~ argv(1)') endif +" If the environment variable $TEST_FILTER is set then filter the function +" names against it. +if $TEST_FILTER != '' + let s:tests = filter(s:tests, 'v:val =~ $TEST_FILTER') +endif + " Execute the tests in alphabetical order. for s:test in sort(s:tests) " Silence, please!
--- a/src/testdir/summarize.vim +++ b/src/testdir/summarize.vim @@ -8,7 +8,7 @@ if 1 let g:failed += a:match+0 elseif a:type ==# 'skipped' let g:skipped += 1 - call extend(g:skipped_output, ["\t".a:match]) + call extend(g:skipped_output, ["\t" .. a:match]) endif endfunc @@ -19,6 +19,10 @@ if 1 let g:failed_output = [] let output = [""] + if $TEST_FILTER != '' + call extend(g:skipped_output, ["\tAll tests not matching $TEST_FILTER: '" .. $TEST_FILTER .. "'"]) + endif + try " This uses the :s command to just fetch and process the output of the " tests, it doesn't actually replace anything.