[Moscow.pm] Test::More и форки в приложении
Ali Ramazanov
netspamer на gmail.com
Пт Дек 29 02:24:18 PST 2017
Привет! Тоже недавно с этим разбирался. Видимо самый простой вариант
сделать автоматические приёмочные тесты, то есть вы запускаете свою
программу как чёрный ящик и проверяете результат, если это возможно. Так же
можно обложить юнит тестами всё вокруг fork. Если всё же нужно
протестировать код, который форкается, в простом случае можете проверить
как отработает parent процесс. Простой пример:
sub test_code_with_fork {
my ($self) = @_;
my $parent = $$;
my $res;
eval {
$res = MyModuleWithFork::run(command => ['test_command']);
};
if ($parent == $$) {
is($@, '');
cmp_deeply(
{'my_return_value' => 1},
$res
);
}
else {
exit;
}
}
Если не сделать exit для child процесса, результат будет непредсказуемым.
По поводу Test::Fork - он подойдёт, если вам нужен форк сделать из
теста (fork_ok
делает внутри fork).
Возможно кто-нибудь предложить что-то получше.
4 декабря 2017 г., 14:26 пользователь Коваль Вячеслав via Moscow-pm <
moscow-pm на pm.org> написал:
> Можете посмотреть на модули (не использовал) Test::Fork, Test::MultiFork,
> Test::SharedFork
> Либо можете посмотреть как реализовано "Fork Safety" в модуле
> DBIx::Connector
> 04.12.2017, 09:57, "Генерал Фейлор via Moscow-pm" <moscow-pm на pm.org>:
>
> Добрый день!
>
> Озадачился вопросом написания Unit-тестов на модуль, в котором
> используется fork. Столкнулся с проблемой, когда даже при единичном
> форке нарушена последовательность тестов. В качестве примера - вывод:
>
> # Looks like you planned 12 tests but ran 9.
> Dubious, test returned 255 (wstat 65280, 0xff00)
> All 12 subtests passed
>
> Test Summary Report
> -------------------
> ./my_dear_test.t (Wstat: 65280 Tests: 12 Failed: 0)
> Non-zero exit status: 255
> Parse errors: Tests out of sequence. Found (6) but expected (9)
> Tests out of sequence. Found (7) but expected (10)
> Tests out of sequence. Found (8) but expected (11)
> Tests out of sequence. Found (9) but expected (12)
>
> Поделитесь, пожалуйста, кто и как пишет подобные тесты?
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
>
> --
> Яндекс.Почта — надёжная почта
> http://mail.yandex.ru/neo2/collect/?exp=1&t=1
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
----------- следующая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20171229/e5b72427/attachment.html>
Подробная информация о списке рассылки Moscow-pm