[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