Awesome
ATTENTION: This repository will no longer be updated! Please submit patches directly to vis instead!
Testing Infrastructure for Vis
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.
Writing good tests
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.