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