Тест не проходит при проверке, если он пишет в стандартный вывод без перевода строки

Когда я запускаю тест 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 ответ

Решение

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

$|=0;     # no auto-flush

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

Другие вопросы по тегам