If you make changes to the syntax plugin, you should add code to the input
file to see the effect of these changes. So that the effect of the changes
-are covered by the test. You can follow these steps:
+is covered by the test. You can follow these steps:
1. Edit the syntax plugin somewhere in your personal setup. Use a file
somewhere to try out the changes.
Fix the syntax plugin until the result is good.
2. Edit the input file for your language to add the items you have improved.
(TODO: how to add another screendump?).
- Run the tests and you should get failures. Like with the previous step,
- carefully check that the new screendumps in the "failed" directory are
- good. Update the syntax plugin and the input file until the highlighting
- is good and you can see the effect of the syntax plugin improvements. Then
- move the screendumps from the "failed" to the "dumps" directory. Now "make
- test" should succeed.
+ Run the tests and you should get failures. (You may opt for faster failure
+ by assigning a small number, e.g. "1", to a VIM_SYNTAX_TEST_WAIT_TIME
+ environment variable and gambling away an "uncertain" possibility of
+ success.) Like with the previous step, carefully check that the new
+ screendumps in the "failed" directory are good. Update the syntax plugin
+ and the input file until the highlighting is good and you can see the
+ effect of the syntax plugin improvements. Then move the screendumps from
+ the "failed" to the "dumps" directory. Now "make test" should succeed.
3. Prepare a pull request with the modified files:
- syntax plugin: syntax/{name}.vim
- Vim setup file: syntax/testdir/input/setup/{name}.vim (if any)
- test input file: syntax/testdir/input/{name}.{ext}
- - test dump files: syntax/testdir/dumps/{name}_00.dump
- syntax/testdir/dumps/{name}_01.dump (if any)
- ...
+ - test dump files: syntax/testdir/dumps/{name}_*.dump
As an extra check you can temporarily put back the old syntax plugin and
verify that the tests fail. Then you know your changes are covered by the
enddef
END
let MAX_FAILED_COUNT = 5
- lockvar MAX_FAILED_COUNT XTESTSCRIPT
+ let DUMP_OPTS = exists("$VIM_SYNTAX_TEST_WAIT_TIME") &&
+ \ !empty($VIM_SYNTAX_TEST_WAIT_TIME)
+ \ ? {'wait': max([1, str2nr($VIM_SYNTAX_TEST_WAIT_TIME)])}
+ \ : {}
+ lockvar DUMP_OPTS MAX_FAILED_COUNT XTESTSCRIPT
let ok_count = 0
let failed_tests = []
let skipped_count = 0
\ ->join('\|')
\ : ''
- " Treat "\.self-testing$" as a string NOT as a regexp.
- if filter ==# '\.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 ruler = s:TermWaitAndPollRuler(buf, in_name_and_out_name)
call ch_log('First screendump for ' .. in_name_and_out_name)
" Make a screendump at the start of the file: failed/root_00.dump
- let fail = VerifyScreenDump(buf, root_00, {})
+ let fail = VerifyScreenDump(buf, root_00, DUMP_OPTS)
" Accommodate the next code block to "buf"'s contingency for self
" wipe-out.
\ in_name_and_out_name)
call ch_log('Next screendump for ' .. in_name_and_out_name)
" Make a screendump of every 18 lines of the file: failed/root_NN.dump
- let fail += VerifyScreenDump(buf, root_next, {})
+ let fail += VerifyScreenDump(buf, root_next, DUMP_OPTS)
endwhile
call StopVimInTerminal(buf)
finally