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:
coreare C unit tests for core data structures used by vis
fuzzinfrastructure for automated fuzzing
vimtests vim compatibility
samtests sam compatibility of the command language
viscontains tests for vis specific behavior/features
luacontains tests for the vis specific lua api
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
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.