Как использовать Devel:: Cover с prove?
Я вижу, что есть некоторые подобные вопросы здесь и на http://www.perlmonks.org но я все еще не понимаю. Представьте, что у меня есть проект с каталогами "lib/" и "t". Я запускаю свои тесты с помощью 'prove':
$ cd $PROJECT_ROOT
$ prove ./*.t
Я хочу получить отчет в формате HTML для одного или нескольких файлов в папке lib/'. Мне не нужны отчеты для файлов в каталоге "t". Простого примера должно быть достаточно. Спасибо
2 ответов
правильный способ - всегда начинать с 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).