This repository contains testing infrastructure for the
vis editor. It is expected
to be cloned into a sub directory of the vis
source tree.
There exist 5 different kinds of tests:
core
are C unit tests for core data structures used by visfuzz
infrastructure for automated fuzzingvim
tests vim compatibilitysam
tests sam compatibility of the command languagevis
contains tests for vis specific behavior/featureslua
contains tests for the vis specific lua api
Run make
to execute all test suites.
Each sub directory contains a README with further information about the specific test method.
Coming up with good and exhaustive tests is often non-trivial, below are some recommendations:
-
Make sure you understand what the expected behavior you want to test is. Think about possible error conditions.
-
Test something specific, but keep the overall context in mind.
For vi(m) frontend related tests consider behavior when given a count or when the command is repeated (using
.
).For example the motions
f
,F
,t
,T
also influence;
and,
. Similar,*
and#
affectn
andN
. -
Test special cases, these often reveal interesting behavior.
Continuing the motion example these might be: empty lines, single letter words, no matches, consecutive matches, over-specified counts, etc.
-
Test systematically and strive for high test coverage.
It is preferable to have a small set of tests which cover a specific functionality exhaustively, rather than lots of half-baked tests which only test the basics.
A good first indication of the completeness of your tests is the achieved code coverage. Ideally a test should primarily exercise a small set of functions which should achieve high path coverage.