vim-vspec is a testing framework for Vim script. It consists of:
A typical test script written with vim-vspec looks like as follows:
runtime plugin/MyGitUtilities.vim describe 'GetGitBranchName()' before call delete('tmp/test', 'rf') call mkdir('tmp/test', 'p') cd tmp/test end after cd - end context 'in a non-Git directory' it 'returns "-"' Expect GetGitBranchName('.') ==# '-' end end context 'in a Git repository' before !git init && touch foo && git add foo && git commit -m 'Initial commit' end it 'returns the current branch' Expect GetGitBranchName('.') ==# 'master' end it 'detects detached HEAD state' !git checkout master~0 Expect GetGitBranchName('.') ==# 'master~0' end end end
Typical ways to run tests are as follows:
# Run tests in a specific file. # The current directory is injected into &rutimepath before running tests. $PATH_TO_VSPEC/bin/prove-vspec -d $PWD t/branch.vim # Like the above, but run all tests in all files under the `t` directory. $PATH_TO_VSPEC/bin/prove-vspec -d $PWD t/ # Like the above, but you may omit `t` because it's the default target. $PATH_TO_VSPEC/bin/prove-vspec -d $PWD
Its output looks like as follows:
t/branch.vim .. ok
All tests successful.
Files=1, Tests=3, 1 wallclock secs ( 0.02 usr 0.00 sys + 0.07 cusr 0.11 csys = 0.20 CPU)
Result: PASS
prove-vspec
runs a test script in an isolated Vim process, and show a summary like the above. User-specific configurations, like ~/.vimrc
and files in ~/.vim
, will never be used to avoid unintentional dependencies.
For proper testing, you have to set up environment to run tests. Suppose that you want to test a plugin which depends on some other plugins, you have to:
These steps are tedious to do by hand. It is recommended to use vim-flavor to automate such tasks. See How to set up GitHub Actios as CI for Vim plugin development for details.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4