Как использовать Devel::Cover with proof?
Я вижу, что есть некоторые подобные вопросы здесь и на http://www.perlmonks.org/ но я до сих пор не понимаю. Представьте, что у меня есть проект с каталогами 'lib/' и 't'. Я запускаю свои тесты с "доказать":
$ cd $PROJECT_ROOT
$ prove ./*.t
Я хочу получить отчет в формате html для одного или нескольких файлов в каталоге 'lib/'. Я не хочу отчеты для файлов в каталоге 't'. Простого примера должно быть достаточно. Спасибо
3 ответа
Правильный способ - всегда начинать с Makefile.PL/Build.PL, как и предполагает выбранный ответ. Однако иногда вы не тот, кто начал, так что...
Я делал фальшивый make-файл:
% cat Makefile
test:
prove -Ilib -r t
Следующее также, кажется, работает (без касания ЛЮБЫХ файлов на диске):
cover -t -make 'prove -Ilib -r t; echo >/dev/null'
Однако это уродливый хак и может перестать работать, если авторы обложки решат более строго указывать опцию -make. Также это не должно работать под окнами. хотелось бы cover
был -prove
вариант вместо
Это все еще создает покрытие для *.t, а также модулей CPAN в нестандартных местах. Это поведение можно исправить с помощью +select/+ignore options (см. Справочную страницу Devel:: Cover):
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
в prove
сам по себе и не передает его (в отличие от -I).
Делатьprove
запустите каждый тестовый файл с активированным Devel::Cover:
$ prove --exec 'perl -MDevel::Cover=-silent,1 -Ilib' t/*.t
По умолчанию это будет печатать статистику после каждого тестового файла. Вот почему я добавил-silent => 1
.
Чтобы распечатать полную статистику, в конце добавьте:
$ cover -summary