4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\HttpKernel\Tests\DataCollector;
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\HttpKernel\DataCollector\DumpDataCollector;
16 use Symfony\Component\HttpFoundation\Request;
17 use Symfony\Component\HttpFoundation\Response;
18 use Symfony\Component\VarDumper\Cloner\Data;
19 use Symfony\Component\VarDumper\Dumper\CliDumper;
22 * @author Nicolas Grekas <p@tchwork.com>
24 class DumpDataCollectorTest extends TestCase
26 public function testDump()
28 $data = new Data(array(array(123)));
30 $collector = new DumpDataCollector();
32 $this->assertSame('dump', $collector->getName());
34 $collector->dump($data);
36 $this->assertSame(1, $collector->getDumpsCount());
38 $dump = $collector->getDumps('html');
39 $this->assertArrayHasKey('data', $dump[0]);
40 $dump[0]['data'] = preg_replace('/^.*?<pre/', '<pre', $dump[0]['data']);
41 $dump[0]['data'] = preg_replace('/sf-dump-\d+/', 'sf-dump', $dump[0]['data']);
45 'data' => "<pre class=sf-dump id=sf-dump data-indent-pad=\" \"><span class=sf-dump-num>123</span>\n</pre><script>Sfdump(\"sf-dump\")</script>\n",
46 'name' => 'DumpDataCollectorTest.php',
49 'fileExcerpt' => false,
52 $this->assertEquals($xDump, $dump);
54 $this->assertStringMatchesFormat('a:3:{i:0;a:5:{s:4:"data";%c:39:"Symfony\Component\VarDumper\Cloner\Data":%a', $collector->serialize());
55 $this->assertSame(0, $collector->getDumpsCount());
56 $this->assertSame('a:2:{i:0;b:0;i:1;s:5:"UTF-8";}', $collector->serialize());
59 public function testCollectDefault()
61 $data = new Data(array(array(123)));
63 $collector = new DumpDataCollector();
65 $collector->dump($data);
69 $collector->collect(new Request(), new Response());
70 $output = preg_replace("/\033\[[^m]*m/", '', ob_get_clean());
72 $this->assertSame("DumpDataCollectorTest.php on line {$line}:\n123\n", $output);
73 $this->assertSame(1, $collector->getDumpsCount());
74 $collector->serialize();
77 public function testCollectHtml()
79 $data = new Data(array(array(123)));
81 $collector = new DumpDataCollector(null, 'test://%f:%l');
83 $collector->dump($data);
87 <pre class=sf-dump id=sf-dump data-indent-pad=" "><a href="test://{$file}:{$line}" title="{$file}"><span class=sf-dump-meta>DumpDataCollectorTest.php</span></a> on line <span class=sf-dump-meta>{$line}</span>:
88 <span class=sf-dump-num>123</span>
93 $response = new Response();
94 $response->headers->set('Content-Type', 'text/html');
95 $collector->collect(new Request(), $response);
96 $output = ob_get_clean();
97 $output = preg_replace('#<(script|style).*?</\1>#s', '', $output);
98 $output = preg_replace('/sf-dump-\d+/', 'sf-dump', $output);
100 $this->assertSame($xOutput, trim($output));
101 $this->assertSame(1, $collector->getDumpsCount());
102 $collector->serialize();
105 public function testFlush()
107 $data = new Data(array(array(456)));
108 $collector = new DumpDataCollector();
109 $collector->dump($data);
110 $line = __LINE__ - 1;
113 $collector->__destruct();
114 $output = preg_replace("/\033\[[^m]*m/", '', ob_get_clean());
115 $this->assertSame("DumpDataCollectorTest.php on line {$line}:\n456\n", $output);
118 public function testFlushNothingWhenDataDumperIsProvided()
120 $data = new Data(array(array(456)));
121 $dumper = new CliDumper('php://output');
122 $collector = new DumpDataCollector(null, null, null, null, $dumper);
125 $collector->dump($data);
126 $line = __LINE__ - 1;
127 $output = preg_replace("/\033\[[^m]*m/", '', ob_get_clean());
128 if (\PHP_VERSION_ID >= 50400) {
129 $this->assertSame("DumpDataCollectorTest.php on line {$line}:\n456\n", $output);
131 $this->assertSame("\"DumpDataCollectorTest.php on line {$line}:\"\n456\n", $output);
135 $collector->__destruct();
136 $this->assertEmpty(ob_get_clean());