Тест не проходит при проверке, если он пишет в стандартный вывод без перевода строки
Когда я запускаю тест 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
... но я понятия не имею (пока), почему это работает.