У меня есть уникальное требование обработки покрытия кода моих сценариев Perl.
Я написал несколько сценариев Perl, которые в свою очередь используют несколько модулей Perl. Мое требование - использовать эти сценарии Perl с различными опциями, которые они поддерживают, и оценивать охват кода как сценариев Perl, так и модулей Perl.
Поэтому я использую Devel::Cover
, Module::Build
и Test::More
из CPAN. Все нормально, если я вызываю функции внутри модулей Perl прямо внутри тестового скрипта. Но это не работает, если я вызываю сценарии напрямую (в этом случае я не генерируюсь с покрытием кода модулями Perl и обоими сценариями).
Вот мой пример тестового скрипта с использованием Test :: More:
use strict;
use warnings;
use Test::More;
BEGIN { plan tests => 1 }
ok(sub {
my @args = ("ex4200fw","-query-fw","-i","192.168.168.1");
#print "# Executing @args \n";
`@args`;
my $rc = $? >> 8;
#print "# Return code: $rc \n";
$rc == 1
}->(),"Query Juniper EX4200 FW, incorrect IP address.\n");
Здесь ex4200fw
(находится в пути) - это написанный мной Perl-скрипт, который в свою очередь вызывает зависимый модуль updates.pm
.
- Есть ли у нас какие-либо инструменты для соответствия этому требованию?
- Запуск сценариев Perl и получение покрытия кода как сценариев, так и его зависимых модулей?
- Можем ли мы сделать то же самое, используя вышеуказанные модули CPAN?
Любой пример сценария очень полезен для меня.