neovim/runtime/indent/testdir
Daniel Hahler 48b2d21d5e vim-patch:8.1.1213: "make clean" in top dir does not cleanup indent test output
Problem:    "make clean" in top dir does not cleanup indent test output.
Solution:   Clean the indent test output.  Do not rely on the vim executable
            for that. (closes vim/vim#4307)
e13a3901ca
2019-09-18 22:46:47 +02:00
..
html.in vim-patch:d47d52232bf2 2019-07-29 20:50:07 +02:00
html.ok vim-patch:63b74a8362b1 2019-08-01 22:48:28 +02:00
matlab.in vim-patch:9d87a37ee9d8 2019-07-29 20:50:07 +02:00
matlab.ok vim-patch:9d87a37ee9d8 2019-07-29 20:50:07 +02:00
README.txt vim-patch:8.1.0496: no tests for indent files 2019-09-18 22:37:25 +02:00
runtest.vim vim-patch:8.1.0599: without the +eval feature the indent tests don't work 2019-09-18 22:38:37 +02:00
tcl.in vim-patch:9d87a37ee9d8 2019-07-29 20:50:07 +02:00
tcl.ok vim-patch:9d87a37ee9d8 2019-07-29 20:50:07 +02:00
vim.in vim-patch:8.1.0496: no tests for indent files 2019-09-18 22:37:25 +02:00
vim.ok vim-patch:8.1.0496: no tests for indent files 2019-09-18 22:37:25 +02:00
xml.in vim-patch:9d87a37ee9d8 2019-07-29 20:50:07 +02:00
xml.ok vim-patch:63b74a8362b1 2019-08-01 22:48:28 +02:00

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.