From 11a0392516a0cdf0e4632ba4dfa4e5e51ec93ee6 Mon Sep 17 00:00:00 2001 From: Maxime Steinhausser Date: Mon, 26 Mar 2018 19:04:09 +0200 Subject: [PATCH] [HttpKernel] DumpDataCollector: do not flush when a dumper is provided --- .../DataCollector/DumpDataCollector.php | 2 +- .../DataCollector/DumpDataCollectorTest.php | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php b/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php index 049053150f..a3880a6e8b 100644 --- a/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php +++ b/src/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php @@ -67,7 +67,7 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface if ($this->stopwatch) { $this->stopwatch->start('dump'); } - if ($this->isCollected) { + if ($this->isCollected && !$this->dumper) { $this->isCollected = false; } diff --git a/src/Symfony/Component/HttpKernel/Tests/DataCollector/DumpDataCollectorTest.php b/src/Symfony/Component/HttpKernel/Tests/DataCollector/DumpDataCollectorTest.php index 23b1d87d1c..2dbb799109 100644 --- a/src/Symfony/Component/HttpKernel/Tests/DataCollector/DumpDataCollectorTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/DataCollector/DumpDataCollectorTest.php @@ -16,6 +16,7 @@ use Symfony\Component\HttpKernel\DataCollector\DumpDataCollector; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\VarDumper\Cloner\Data; +use Symfony\Component\VarDumper\Dumper\CliDumper; /** * @author Nicolas Grekas @@ -130,4 +131,24 @@ EOTXT; $this->assertSame("\"DumpDataCollectorTest.php on line {$line}:\"\n456\n", ob_get_clean()); } } + + public function testFlushNothingWhenDataDumperIsProvided() + { + $data = new Data(array(array(456))); + $dumper = new CliDumper('php://output'); + $collector = new DumpDataCollector(null, null, null, null, $dumper); + + ob_start(); + $collector->dump($data); + $line = __LINE__ - 1; + if (\PHP_VERSION_ID >= 50400) { + $this->assertSame("DumpDataCollectorTest.php on line {$line}:\n456\n", ob_get_clean()); + } else { + $this->assertSame("\"DumpDataCollectorTest.php on line {$line}:\"\n456\n", ob_get_clean()); + } + + ob_start(); + $collector->__destruct(); + $this->assertEmpty(ob_get_clean()); + } }