Johan Lindstrom's Devel::CoverX::Covered is still relatively new, but here are some changes to my .vimrc based on this (stripped down for clarity):
function! PerlMappings()
noremap ,cv :call Coverage()
noremap K :!perldoc perldoc -f
endfunction
function! PerlTestMappings()
noremap ,t :!prove -vl --norc %
endfunction
function! Coverage()
let filename = bufname('%')
if match(filename, '\.t$') > -1
execute '!covered by --test_file="'. filename .'"'
else
execute '!covered covering --source_file="'. filename .'"'
end
endfunction
au! FileType perl :call PerlMappings()
au! BufRead,BufNewFile *.t :call PerlTestMappings()
When I am editing lib/Bermuda.pm and I type ,cv, I get this:
t/basic.t t/bermuda.t t/exceptions.t t/serialize.t t/subelements.t t/xml.t
And if I'm editing t/basic.t and I type ,cv, I get this:
lib/Bermuda.pm lib/Bermuda/Island.pm lib/Bermuda/Island/Attribute.pm lib/Bermuda/Island/Element.pm lib/Bermuda/Island/Metadata.pm lib/Bermuda/Parser.pm lib/Bermuda/RNG.pm lib/Bermuda/Writer.pm
In other words, know what tests will cover your code and vice versa. Johan has more features on the way, including being able to know which tests cover a particular line of a file.
Already I need to update my Oslo talk :)