view runtime/indent/testdir/README.txt @ 14970:19b757c6c6a7 v8.1.0496

patch 8.1.0496: no tests for indent files commit https://github.com/vim/vim/commit/c0fe4978f2311be9a0221d4c2369251c719b399a Author: Bram Moolenaar <Bram@vim.org> Date: Thu Oct 25 16:53:19 2018 +0200 patch 8.1.0496: no tests for indent files Problem: No tests for indent files. Solution: Add a mechanism for running indent file tests. Add a first test for Vim indenting.
author Bram Moolenaar <Bram@vim.org>
date Thu, 25 Oct 2018 17:00:07 +0200
parents
children 2b30a2b4bde2
line wrap: on
line source

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.