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 7The numbered tests are older, we have switched to named tests. Don't add any 8more numbered tests. 9 10And then you can choose between a new style test, which is a Vim script, or an 11old style test, which uses Normal mode commands. Use a new style test if you 12can. Use an old style test when it needs to run without the +eval feature. 13 14 15TO ADD A NEW STYLE TEST: 16 171) Create a test_<subject>.vim file. 182) Add test_<subject>.res to NEW_TESTS_RES in Make_all.mak in alphabetical 19 order. 203) Also add an entry "test_<subject>" to NEW_TESTS in Make_all.mak. 214) Use make test_<subject> to run a single test. 22 23At 2), instead of running the test separately, it can be included in 24"test_alot". Do this for quick tests without side effects. The test runs a 25bit faster, because Vim doesn't have to be started, one Vim instance runs many 26tests. 27 28 29What you can use (see test_assert.vim for an example): 30 31- Call assert_equal(), assert_true(), assert_false(), etc. 32 33- Use assert_fails() to check for expected errors. 34 35- Use try/catch to avoid an exception aborts the test. 36 37- Use alloc_fail() to have memory allocation fail. This makes it possible to 38 check memory allocation failures are handled gracefully. You need to change 39 40- the source code to add an ID to the allocation. Update LAST_ID_USED above 41 alloc_id() to the highest ID used. 42 43- Use test_override() to make Vim behave differently, e.g. if char_avail() 44 must return FALSE for a while. E.g. to trigger the CursorMovedI autocommand 45 event. 46 47- See test_cursor_func.vim for an example. 48 49- If the bug that is being tested isn't fixed yet, you can throw an exception 50 with "Skipped" so that it's clear this still needs work. E.g.: throw 51 "Skipped: Bug with <c-e> and popupmenu not fixed yet" 52 53- See the start of runtest.vim for more help. 54 55 56TO ADD A SCREEN DUMP TEST: 57 58Mostly the same as writing a new style test. Additionally, see help on 59"terminal-dumptest". Put the reference dump in "dumps/Test_func_name.dump". 60 61 62TO ADD AN OLD STYLE TEST: 63 641) Create test_<subject>.in and test_<subject>.ok files. 652) Add test_<subject>.out to SCRIPTS_ALL in Make_all.mak in alphabetical order. 663) Use make test_<subject>.out to run a single test in src/testdir/. 67 Use make test_<subject> to run a single test in src/. 684) Also add an entry in src/Makefile. 69 70Keep in mind that the files are used as if everything was typed: 71- To add comments use: :" (that's an Ex command comment) 72- A line break is like pressing Enter. If that happens on the last line 73 you'll hear a beep! 74