Laravel: не могу перенаправить stdout в файл при запуске PHPUnit теста
Проблема: не могу перенаправить stdout в файл при запуске PHPUnit теста. Как воспроизвести:
1. Создать тест
php artisan make:test StdoutTest --unit
Содержимое теста:
<?php
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class StdoutTest extends TestCase
{
public function testExample()
{
die("ok");
}
}
2. Запустить тест:
php artisan test --filter StdoutTest > dump.log
Тест ok выводится в консоль, но в файле dump.log ничего нет.
- stderr проверял, там пусто
В чем может быть проблема?
Ответы (1 шт):
Автор решения: Total Pusher
→ Ссылка
Оказывается, нужно использовать опцию --without-tty:
php artisan test --without-tty --filter StdoutTest > dump.log
Ее я нашел в исходный кодах Laravel. Если копнуть чуть глубже, в режиме "tty" вывод осуществлялся в /dev/tty. Поэтому перенаправление stdout и stderr в файл не дает нужного результата.