From 1f042b86a4d20363ff4de74517fda7be852d8b9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillaume=20P=C3=A9delagrabe?= Date: Thu, 26 Mar 2020 15:03:46 +0100 Subject: [PATCH] testDoWriteOnFailure --- .../Component/Console/Output/StreamOutput.php | 1 + .../Console/Tests/Fixtures/stream_output_file.txt | 0 .../Console/Tests/Output/StreamOutputTest.php | 14 ++++++++++++++ 3 files changed, 15 insertions(+) create mode 100644 src/Symfony/Component/Console/Tests/Fixtures/stream_output_file.txt diff --git a/src/Symfony/Component/Console/Output/StreamOutput.php b/src/Symfony/Component/Console/Output/StreamOutput.php index e1b8c9ca5437a..de5f62404312e 100644 --- a/src/Symfony/Component/Console/Output/StreamOutput.php +++ b/src/Symfony/Component/Console/Output/StreamOutput.php @@ -75,6 +75,7 @@ protected function doWrite($message, $newline) } if (!is_resource($this->stream) || !is_string($message)) { + // should never happen throw new RuntimeException('Unable to write output.'); } @fwrite($this->stream, $message); diff --git a/src/Symfony/Component/Console/Tests/Fixtures/stream_output_file.txt b/src/Symfony/Component/Console/Tests/Fixtures/stream_output_file.txt new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/src/Symfony/Component/Console/Tests/Output/StreamOutputTest.php b/src/Symfony/Component/Console/Tests/Output/StreamOutputTest.php index d843fa4a4559c..34b67e41a5c93 100644 --- a/src/Symfony/Component/Console/Tests/Output/StreamOutputTest.php +++ b/src/Symfony/Component/Console/Tests/Output/StreamOutputTest.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Console\Tests\Output; +use PHPUnit\Framework\AssertionFailedError; use PHPUnit\Framework\TestCase; use Symfony\Component\Console\Output\Output; use Symfony\Component\Console\Output\StreamOutput; @@ -56,4 +57,17 @@ public function testDoWrite() rewind($output->getStream()); $this->assertEquals('foo'.PHP_EOL, stream_get_contents($output->getStream()), '->doWrite() writes to the stream'); } + + public function testDoWriteOnFailure() + { + $resource = fopen(__DIR__.'/../Fixtures/stream_output_file.txt', 'r', false); + $output = new StreamOutput($resource); + try { + $output->writeln('foo'); + } catch (\RuntimeException $exception) { + throw new AssertionFailedError('dd'); + } + rewind($output->getStream()); + $this->assertEquals('', stream_get_contents($output->getStream())); + } }