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 в файл не дает нужного результата.

→ Ссылка