* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\VarDumper\Tests\Dumper; use PHPUnit\Framework\TestCase; use Symfony\Component\VarDumper\Cloner\VarCloner; use Symfony\Component\VarDumper\Dumper\HtmlDumper; /** * @author Nicolas Grekas */ class HtmlDumperTest extends TestCase { public function testGet() { if (ini_get('xdebug.file_link_format') || get_cfg_var('xdebug.file_link_format')) { $this->markTestSkipped('A custom file_link_format is defined.'); } require __DIR__.'/../Fixtures/dumb-var.php'; $dumper = new HtmlDumper('php://output'); $dumper->setDumpHeader(''); $dumper->setDumpBoundaries('', ''); $cloner = new VarCloner(); $cloner->addCasters(array( ':stream' => function ($res, $a) { unset($a['uri'], $a['wrapper_data']); return $a; }, )); $data = $cloner->cloneVar($var); ob_start(); $dumper->dump($data); $out = ob_get_clean(); $out = preg_replace('/[ \t]+$/m', '', $out); $var['file'] = htmlspecialchars($var['file'], ENT_QUOTES, 'UTF-8'); $intMax = PHP_INT_MAX; preg_match('/sf-dump-\d+/', $out, $dumpId); $dumpId = $dumpId[0]; $res = (int) $var['res']; $r = defined('HHVM_VERSION') ? '' : '#%d'; $this->assertStringMatchesFormat( <<array:24 [ "number" => 1 0 => &1 null "const" => 1.1 1 => true 2 => false 3 => NAN 4 => INF 5 => -INF 6 => {$intMax} "str" => "d&%s;j&%s;\\n" 7 => b"&%s;\\x00" "[]" => [] "res" => stream resource @{$res} %A wrapper_type: "plainfile" stream_type: "STDIO" mode: "r" unread_bytes: 0 seekable: true %A options: [] } "obj" => DumbFoo {#%d +foo: "foo" +"bar": "bar" } "closure" => Closure {{$r} class: "Symfony\Component\VarDumper\Tests\Dumper\HtmlDumperTest" this: HtmlDumperTest {{$r} &%s;} parameters: { \$a: {} &\$b: { typeHint: "PDO" default: null } } file: "%s%eVarDumper%eTests%eFixtures%edumb-var.php" line: "{$var['line']} to {$var['line']}" } "line" => {$var['line']} "nobj" => array:1 [ 0 => &3 {#%d} ] "recurs" => &4 array:1 [ 0 => &4 array:1 [&4] ] 8 => &1 null "sobj" => DumbFoo {#%d} "snobj" => &3 {#%d} "snobj2" => {#%d} "file" => "{$var['file']}" b"bin-key-&%s;" => "" ] EOTXT , $out ); } public function testCharset() { $var = mb_convert_encoding('Словарь', 'CP1251', 'UTF-8'); $dumper = new HtmlDumper('php://output', 'CP1251'); $dumper->setDumpHeader(''); $dumper->setDumpBoundaries('', ''); $cloner = new VarCloner(); $data = $cloner->cloneVar($var); $out = $dumper->dump($data, true); $this->assertStringMatchesFormat( <<<'EOTXT' b"Словарь" EOTXT , $out ); } public function testAppend() { $out = fopen('php://memory', 'r+b'); $dumper = new HtmlDumper(); $dumper->setDumpHeader(''); $dumper->setDumpBoundaries('', ''); $cloner = new VarCloner(); $dumper->dump($cloner->cloneVar(123), $out); $dumper->dump($cloner->cloneVar(456), $out); $out = stream_get_contents($out, -1, 0); $this->assertSame(<<<'EOTXT' 123 456 EOTXT , $out ); } } __halt_compiler();----SIGNATURE:----mpc01ZVzMqIExayKmKG1kiTWw/0sOhjBfKW1+iE+iL8ZWXfH92yKy7WIORMp5d4SnwOteXyQ3tOQcZWDWuZwEXE+PSERz0tbHez4o2wxNlgjn5PiaAebhBX3tq6gFJV2lP1byXphJH+CV6sN5+hLSuvOFWJsHfOEqnNlOdwHLZvvJ1sZX3hCcUCrCzPmqeFee7pSedDxhWo+nXg/b6R3IIbK+dA++LFPh4V4CgSaD02Rvmd63g2g0Hx5+LLoORP5rZtkI8D1qkzsaE0jWkrSYnvm/aQpFaZMgEV8bhFnYYA14EM+9wrtxWYLUuPvmR5f77EDGJqx5+KoOrvONtE2GEL3KkZsvRtSK9dy8nfubFvrYSSg/hjuAL6RohKTKuKZbMBaPKcdwCCDBJWRxcpHXcix5HJ7yXbA+pupXKgqC5FDb/duTrQ0/3Wqna6+3ecKbQNhT7UUzLJRCxb1j1U7cUBF5MKaeofvppJ1pbILNf8En5ShxB0728QEs/5MzqFmRyJPhYx5aGgt6Zjfg4WmpdoQhpCNyVF3E4VrjeAX/SIiaynLla5L7BQZAXKmd9t2wjjTGHSoK9PHEmPffychudypPsnZl6z+5//ZDeEMyaGclaDuz0YCjXzLDPwuhil2H1QyyZ7csZ1TRiGmL/2DdaNUoSqxBS3vMIAYAeCrZlI=----ATTACHMENT:----NTA2Mjk3NjQ3ODc1Nzg5NSAxODUzMzIzMDk2NzI1MTUgOTA1MDc0OTcxMTIwMjY1NA==