mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
7f59f5b104
Problem: No tests for indent files.
Solution: Add a mechanism for running indent file tests. Add a first test
for Vim indenting.
c0fe4978f2
93 lines
2.6 KiB
Plaintext
93 lines
2.6 KiB
Plaintext
TESTING INDENT SCRIPTS
|
|
|
|
We'll use FILETYPE for the filetype name here.
|
|
|
|
|
|
FORMAT OF THE FILETYPE.IN FILE
|
|
|
|
First of all, create a FILETYPE.in file. It should contain:
|
|
|
|
- A modeline setting the 'filetype' and any other option values.
|
|
This must work like a comment for FILETYPE. E.g. for vim:
|
|
" vim: set ft=vim sw=4 :
|
|
|
|
- At least one block of lines to indent, prefixed with START_INDENT and
|
|
followed by END_INDENT. These lines must also look like a comment for your
|
|
FILETYPE. You would normally leave out all indent, so that the effect of
|
|
the indent command results in adding indent. Example:
|
|
|
|
" START_INDENT
|
|
func Some()
|
|
let x = 1
|
|
endfunc
|
|
" END_INDENT
|
|
|
|
- Optionally, a line with INDENT_EXE, followed by a Vim command. This will be
|
|
executed before indenting the lines. Example:
|
|
|
|
" START_INDENT
|
|
" INDENT_EXE let g:vim_indent_cont = 6
|
|
let cmd =
|
|
\ 'some '
|
|
\ 'string'
|
|
" END_INDENT
|
|
|
|
Note that the command is not undone, you may need to reverse the effect for
|
|
the next block of lines.
|
|
|
|
- Alternatively to indenting all the lines between START_INDENT and
|
|
END_INDENT, use a INDENT_AT line, which specifies a pattern to find the line
|
|
to indent. Example:
|
|
|
|
" START_INDENT
|
|
" INDENT_AT this-line
|
|
func Some()
|
|
let f = x " this-line
|
|
endfunc
|
|
" END_INDENT
|
|
|
|
Alternatively you can use INDENT_NEXT to indent the line below the matching
|
|
pattern:
|
|
|
|
" START_INDENT
|
|
" INDENT_NEXT next-line
|
|
func Some()
|
|
" next-line
|
|
let f = x
|
|
endfunc
|
|
" END_INDENT
|
|
|
|
Or use INDENT_PREV to indent the line above the matching pattern:
|
|
|
|
" START_INDENT
|
|
" INDENT_PREV prev-line
|
|
func Some()
|
|
let f = x
|
|
" prev-line
|
|
endfunc
|
|
" END_INDENT
|
|
|
|
It's best to keep the whole file valid for FILETYPE, so that syntax
|
|
highlighting works normally, and any indenting that depends on the syntax
|
|
highlighting also works.
|
|
|
|
|
|
RUNNING THE TEST
|
|
|
|
Before running the test, create a FILETYPE.ok file. You can leave it empty at
|
|
first.
|
|
|
|
Now run "make test". After Vim has done the indenting you will see a
|
|
FILETYPE.fail file. This contains the actual result of indenting, and it's
|
|
different from the FILETYPE.ok file.
|
|
|
|
Check the contents of the FILETYPE.fail file. If it is perfectly OK, then
|
|
rename it to overwrite the FILETYPE.ok file. If you now run "make test" again,
|
|
the test will pass and create a FILETYPE.out file, which is identical to the
|
|
FILETYPE.ok file.
|
|
|
|
If you try to run "make test" again you will notice that nothing happens,
|
|
because the FILETYPE.out file already exists. Delete it, or do "make clean",
|
|
so that the text runs again. If you edit the FILETYPE.in file, so that it's
|
|
newer than the FILETYPE.out file, the test will also run.
|