Как использовать Devel:: Cover с prove?

Я вижу, что есть некоторые подобные вопросы здесь и на http://www.perlmonks.org но я все еще не понимаю. Представьте, что у меня есть проект с каталогами "lib/" и "t". Я запускаю свои тесты с помощью 'prove':

$ cd $PROJECT_ROOT
$ prove ./*.t

Я хочу получить отчет в формате HTML для одного или нескольких файлов в папке lib/'. Мне не нужны отчеты для файлов в каталоге "t". Простого примера должно быть достаточно. Спасибо

2 ответов


  1. perl Makefile.PL или perl Build.PL
  2. cover -test

правильный способ - всегда начинать с Makefile.PL/Build.PL, как и предполагает выбранный ответ. Тем не менее, иногда вы не тот, кто начал, так что...

я использовал, чтобы сделать поддельный makefile:

 % cat Makefile
 test:
      prove -Ilib -r t

также работает следующее (без прикосновения к любым файлам на диске):

cover -t -make 'prove -Ilib -r t; echo >/dev/null'

это уродливый Хак, однако, и может перестать работать, если авторы обложки решат цитировать-сделать вариант более строго. Также он не должен работать под Windows. Я желание cover у вместо.

этот по-прежнему генерирует покрытие для *.T а также модули CPAN в нестандартных местах. Это поведение можно исправить с помощью параметров + select/ + ignore (см. Devel:: manpage обложки):

cover -t +select ^lib +ignore ^

Итак, команда tl; dr "magic" -

cover -t +select ^lib +ignore ^ -make 'prove -Ilib -r t; exit $?'

редактировать следующее не сработало для меня - он печатает только краткое резюме:

 PERL5OPT="$PERL5OPT -MDevel::Cover" prove -Ilib -r t
 cover -t +select ^lib +ignore ^

отметим, что prove -MSomething применяется Something to prove сам и не передает его (в отличие от-I).