summaryrefslogtreecommitdiffstats
path: root/src/testdir/README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/testdir/README.txt')
-rw-r--r--src/testdir/README.txt73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/testdir/README.txt b/src/testdir/README.txt
new file mode 100644
index 0000000..f4486e3
--- /dev/null
+++ b/src/testdir/README.txt
@@ -0,0 +1,73 @@
+This directory contains tests for various Vim features.
+For testing an indent script see runtime/indent/testdir/README.txt.
+
+If it makes sense, add a new test method to an already existing file. You may
+want to separate it from other tests with comment lines.
+
+The numbered tests are older, we have switched to named tests. Don't add any
+more numbered tests.
+
+And then you can choose between a new style test, which is a Vim script, or an
+old style test, which uses Normal mode commands. Use a new style test if you
+can. Use an old style test when it needs to run without the +eval feature.
+
+
+TO ADD A NEW STYLE TEST:
+
+1) Create a test_<subject>.vim file.
+2) Add test_<subject>.res to NEW_TESTS_RES in Make_all.mak in alphabetical
+ order.
+3) Also add an entry "test_<subject>" to NEW_TESTS in Make_all.mak.
+4) Use make test_<subject> to run a single test.
+
+At 2), instead of running the test separately, it can be included in
+"test_alot". Do this for quick tests without side effects. The test runs a
+bit faster, because Vim doesn't have to be started, one Vim instance runs many
+tests.
+
+
+What you can use (see test_assert.vim for an example):
+
+- Call assert_equal(), assert_true(), assert_false(), etc.
+
+- Use assert_fails() to check for expected errors.
+
+- Use try/catch to avoid an exception aborts the test.
+
+- Use alloc_fail() to have memory allocation fail. This makes it possible to
+ check memory allocation failures are handled gracefully. You need to change
+
+- the source code to add an ID to the allocation. Update LAST_ID_USED above
+ alloc_id() to the highest ID used.
+
+- Use test_override() to make Vim behave differently, e.g. if char_avail()
+ must return FALSE for a while. E.g. to trigger the CursorMovedI autocommand
+ event.
+
+- See test_cursor_func.vim for an example.
+
+- If the bug that is being tested isn't fixed yet, you can throw an exception
+ with "Skipped" so that it's clear this still needs work. E.g.: throw
+ "Skipped: Bug with <c-e> and popupmenu not fixed yet"
+
+- See the start of runtest.vim for more help.
+
+
+TO ADD A SCREEN DUMP TEST:
+
+Mostly the same as writing a new style test. Additionally, see help on
+"terminal-dumptest". Put the reference dump in "dumps/Test_func_name.dump".
+
+
+TO ADD AN OLD STYLE TEST:
+
+1) Create test_<subject>.in and test_<subject>.ok files.
+2) Add test_<subject>.out to SCRIPTS_ALL in Make_all.mak in alphabetical order.
+3) Use make test_<subject>.out to run a single test in src/testdir/.
+ Use make test_<subject> to run a single test in src/.
+4) Also add an entry in src/Makefile.
+
+Keep in mind that the files are used as if everything was typed:
+- To add comments use: :" (that's an Ex command comment)
+- A line break is like pressing Enter. If that happens on the last line
+ you'll hear a beep!