Better testing with vim!

Ovid on 2006-08-03T10:14:46

If you read this post, you'll notice that my Test::Class driver script allows the following syntax:

t/test_class_tests.t path/to/test/class/to/run.pm

However, some of my tests are in Test::Class style and some of my tests are old-style test scripts. I bound two keys in vim to handle them (,T and ,t, respectively), but that was annoying, so I just wrote this:

if exists( "perl_tests" )
    finish
endif
let perl_tests = 1

noremap  ,t :call RunTests()

function RunTests()
    if match(getline(1), 'package') > -1
        execute ":!perl t/test_class_tests.t %"
    else
        execute ":!prove -lv %"
    endif
endfunction

If you're using my Test::Class driver script or a similar variation and you save the above in something like ~/.vim/plugin/PerlTests.vim, then whenever you hit ,t, you will run the tests in whatever test file you're working on. It assumes that all Test::Class files have a package declaration on the first line, though, so not everyone will be happy with that. Improvements welcome!

Checking to see if a file is named test.pl, ends in .t or is a regular package which actually uses Test::Class would be good improvements.