Когда я заканчиваю умирающий тест Perl с помощью команды proof -v, почему результаты не сохраняются в текстовом файле через STDOUT? - PullRequest
0 голосов
/ 03 апреля 2012

Я за рулем SeleniumRC, и страница зависает, поэтому я нажимаю Ctrl-C, чтобы остановить тестирование и устранить проблему.Если я передаю текстовый файл через командную строку следующим образом:

prove -v some.t :: data.csv > testresults.txt

... Я либо ничего не получаю, либо "Завершить пакетное задание (Y / N)?" В текстовом файле.Обратите внимание, что если я не передам файл для вывода через командную строку, результаты прокрутятся, как и ожидалось.

Есть ли возможность записи в файл через стандартный вывод, который не -v?

Эта проблема сохраняется, когда я добавляю $| = 1; в любой из его форм к prove.pm или some.t.Есть ли что-то в файле proof или Test :: Harness, которое переопределяет мою настройку автоматической промывки?

Я также пробовал этот вариант: prove -v some.t > testresults.txt :: data.csv

1 Ответ

2 голосов
/ 03 апреля 2012

Похоже, вы страдаете от буферизации. Вывод буферизуется (когда не отправляется на терминал), и эти буферы не сбрасываются при заполнении приложения с помощью Ctrl-C.

Если выходные данные получены из сценария Perl, попробуйте добавить к нему $| = 1;.

...