summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--runtime/syntax/testdir/README.txt31
-rw-r--r--runtime/syntax/testdir/runtest.vim26
2 files changed, 47 insertions, 10 deletions
diff --git a/runtime/syntax/testdir/README.txt b/runtime/syntax/testdir/README.txt
index 22b608433d..7628ef149e 100644
--- a/runtime/syntax/testdir/README.txt
+++ b/runtime/syntax/testdir/README.txt
@@ -26,14 +26,30 @@ Creating a syntax plugin test
-----------------------------
Create a source file in the language you want to test in the "input"
-directory. Make sure to include some interesting constructs with complicated
-highlighting.
-
-Use the filetype name as the base and a file name extension matching the
-filetype. Let's use Java as an example. The file would then be
+directory. Use the filetype name as the base and a file name extension
+matching the filetype. Let's use Java as an example. The file would then be
"input/java.java".
+Make sure to include some interesting constructs with plenty of complicated
+highlighting. Optionally, pre-configure the testing environment by including
+setup commands at the top of the input file. The format for these lines is:
+
+ TEST_SETUP {command}
+
+where {command} is any valid Ex command, which extends to the end of the line.
+The first 20 lines of the input file are ALWAYS scanned for setup commands and
+these will be executed before the syntax highlighting is enabled. Typically,
+these lines would be included as comments so as not to introduce any syntax
+errors in the input file but this is not required.
+
+Continuing the Java example:
+
+ // TEST_SETUP let g:java_space_errors = 1
+ // TEST_SETUP let g:java_minlines = 5
+ class Test { }
+
If there is no further setup required, you can now run the tests:
+
make test
The first time this will fail with an error for a missing screendump. The
@@ -69,8 +85,10 @@ are covered by the test. You can follow these steps:
pass, but if you fixed syntax highlighting that was already visible in the
input file, carefully check that the changes in the screendump are
intentional:
+
let fname = '{name}_99.dump'
call term_dumpdiff('failed/' .. fname, 'dumps/' .. fname)
+
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?).
@@ -91,7 +109,6 @@ test.
-TODO: run test for one specific filetype
-TODO: testing with various option values
+TODO: run test for one specific filetype
TODO: test syncing by jumping around
diff --git a/runtime/syntax/testdir/runtest.vim b/runtime/syntax/testdir/runtest.vim
index a2cdef3721..ffa2be8dde 100644
--- a/runtime/syntax/testdir/runtest.vim
+++ b/runtime/syntax/testdir/runtest.vim
@@ -114,8 +114,6 @@ func RunTest()
call delete('done/' .. root)
let lines =<< trim END
- syntax on
-
" extra info for shell variables
func ShellInfo()
let msg = ''
@@ -145,6 +143,25 @@ func RunTest()
redraw!
endfunc
+ func SetUpVim()
+ call cursor(1, 1)
+ " Defend against rogue TEST_SETUP commands.
+ for _ in range(20)
+ let lnum = search('\<TEST_SETUP\>', 'eW', 20)
+ if lnum < 1
+ break
+ endif
+ exe substitute(getline(lnum), '.*TEST_SETUP', '', '')
+ endfor
+ call cursor(1, 1)
+ " BEGIN [runtime/defaults.vim]
+ set display=truncate ruler scrolloff=5
+ " Provide pre-TEST_SETUP support for input/*.c.
+ let g:c_comment_strings = 1
+ syntax on
+ " END [runtime/defaults.vim]
+ redraw!
+ endfunc
END
call writefile(lines, 'Xtestscript')
@@ -157,9 +174,12 @@ func RunTest()
" for the terminal window.
redraw
- let buf = RunVimInTerminal('-S Xtestscript', {})
+ " Let "Xtestscript#SetUpVim()" turn the syntax on.
+ let buf = RunVimInTerminal('-Nu NONE -S Xtestscript', {})
" edit the file only after catching the SwapExists event
call term_sendkeys(buf, ":edit " .. fname .. "\<CR>")
+ " set up the testing environment
+ call term_sendkeys(buf, ":call SetUpVim()\<CR>")
" load filetype specific settings
call term_sendkeys(buf, ":call LoadFiletype('" .. filetype .. "')\<CR>")