Тест не проходит при проверке, если он пишет в стандартный вывод без перевода строки - PullRequest
5 голосов
/ 16 января 2012

Когда я запускаю тест perl с использованием утилиты prove, он завершается неудачно, если тестируемый метод содержит print операторов, которые не заканчиваются символами новой строки.

use Test::More tests=>1;

ok(foo(), "calling foo");

sub foo{
    print "A";
    1;
}

В результате

Bad plan.  You planned 1 tests but ran 0.

Если я добавлю новую строку: print "A\n";, тест пройден.

(Обратите внимание, что если я просто выполню тест perl mytest.t вместо использования prove, он пройдет в любом случае).

Любые идеи, почему это может быть, и как обойти это?

1 Ответ

2 голосов
/ 16 января 2012

Я нашел быстрый обходной путь:

$|=0;     # no auto-flush

... но я не знаю (пока), почему это работает.

...