xref: /vim-8.2.3635/src/testdir/README.txt (revision 02c037a4)
1This directory contains tests for various Vim features.
2For testing an indent script see runtime/indent/testdir/README.txt.
3
4If it makes sense, add a new test method to an already existing file.  You may
5want to separate it from other tests with comment lines.
6
7TO ADD A NEW STYLE TEST:
8
91) Create a test_<subject>.vim file.
102) Add test_<subject>.res to NEW_TESTS_RES in Make_all.mak in alphabetical
11   order.
123) Also add an entry "test_<subject>" to NEW_TESTS in Make_all.mak.
134) Use make test_<subject> to run a single test.
14
15At 2), instead of running the test separately, it can be included in
16"test_alot".  Do this for quick tests without side effects.  The test runs a
17bit faster, because Vim doesn't have to be started, one Vim instance runs many
18tests.
19
20At 4), to run a test in GUI, add "GUI_FLAG=-g" to the make command.
21
22
23What you can use (see test_assert.vim for an example):
24
25- Call assert_equal(), assert_true(), assert_false(), etc.
26
27- Use assert_fails() to check for expected errors.
28
29- Use try/catch to avoid an exception aborts the test.
30
31- Use test_alloc_fail() to have memory allocation fail.  This makes it possible
32  to check memory allocation failures are handled gracefully.  You need to
33  change the source code to add an ID to the allocation.  Add a new one to
34  alloc_id_T, before aid_last.
35
36- Use test_override() to make Vim behave differently, e.g.  if char_avail()
37  must return FALSE for a while.  E.g. to trigger the CursorMovedI autocommand
38  event. See test_cursor_func.vim for an example.
39
40- If the bug that is being tested isn't fixed yet, you can throw an exception
41  with "Skipped" so that it's clear this still needs work.  E.g.: throw
42  "Skipped: Bug with <c-e> and popupmenu not fixed yet"
43
44- See the start of runtest.vim for more help.
45
46
47TO ADD A SCREEN DUMP TEST:
48
49Mostly the same as writing a new style test.  Additionally, see help on
50"terminal-dumptest".  Put the reference dump in "dumps/Test_func_name.dump".
51
52
53OLD STYLE TESTS:
54
55There are a few tests that are used when Vim was built without the +eval
56feature.  These cannot use the "assert" functions, therefore they consist of a
57.in file that contains Normal mode commands between STARTTEST and ENDTEST.
58They modify the file and the result gets writtein in the test.out file.  This
59is then compared with the .ok file.  If they are equal the test passed.  If
60they differ the test failed.
61