* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\VarDumper\Tests\Caster; use PHPUnit\Framework\TestCase; use Symfony\Component\VarDumper\Caster\Caster; use Symfony\Component\VarDumper\Caster\ExceptionCaster; use Symfony\Component\VarDumper\Caster\FrameStub; use Symfony\Component\VarDumper\Cloner\VarCloner; use Symfony\Component\VarDumper\Dumper\HtmlDumper; use Symfony\Component\VarDumper\Test\VarDumperTestTrait; class ExceptionCasterTest extends TestCase { use VarDumperTestTrait; private function getTestException($msg, &$ref = null) { return new \Exception(''.$msg); } protected function tearDown() { ExceptionCaster::$srcContext = 1; ExceptionCaster::$traceArgs = true; } public function testDefaultSettings() { $ref = array('foo'); $e = $this->getTestException('foo', $ref); $expectedDump = <<<'EODUMP' Exception { #message: "foo" #code: 0 #file: "%sExceptionCasterTest.php" #line: 28 trace: { %s%eTests%eCaster%eExceptionCasterTest.php:28 { › { › return new \Exception(''.$msg); › } } %s%eTests%eCaster%eExceptionCasterTest.php:40 { …} Symfony\Component\VarDumper\Tests\Caster\ExceptionCasterTest->testDefaultSettings() {} %A EODUMP; $this->assertDumpMatchesFormat($expectedDump, $e); $this->assertSame(array('foo'), $ref); } public function testSeek() { $e = $this->getTestException(2); $expectedDump = <<<'EODUMP' { %s%eTests%eCaster%eExceptionCasterTest.php:28 { › { › return new \Exception(''.$msg); › } } %s%eTests%eCaster%eExceptionCasterTest.php:65 { …} Symfony\Component\VarDumper\Tests\Caster\ExceptionCasterTest->testSeek() {} %A EODUMP; $this->assertStringMatchesFormat($expectedDump, $this->getDump($e, 'trace')); } public function testNoArgs() { $e = $this->getTestException(1); ExceptionCaster::$traceArgs = false; $expectedDump = <<<'EODUMP' Exception { #message: "1" #code: 0 #file: "%sExceptionCasterTest.php" #line: 28 trace: { %sExceptionCasterTest.php:28 { › { › return new \Exception(''.$msg); › } } %s%eTests%eCaster%eExceptionCasterTest.php:84 { …} Symfony\Component\VarDumper\Tests\Caster\ExceptionCasterTest->testNoArgs() {} %A EODUMP; $this->assertDumpMatchesFormat($expectedDump, $e); } public function testNoSrcContext() { $e = $this->getTestException(1); ExceptionCaster::$srcContext = -1; $expectedDump = <<<'EODUMP' Exception { #message: "1" #code: 0 #file: "%sExceptionCasterTest.php" #line: 28 trace: { %s%eTests%eCaster%eExceptionCasterTest.php:28 %s%eTests%eCaster%eExceptionCasterTest.php:%d %A EODUMP; $this->assertDumpMatchesFormat($expectedDump, $e); } public function testHtmlDump() { if (ini_get('xdebug.file_link_format') || get_cfg_var('xdebug.file_link_format')) { $this->markTestSkipped('A custom file_link_format is defined.'); } $e = $this->getTestException(1); ExceptionCaster::$srcContext = -1; $cloner = new VarCloner(); $cloner->setMaxItems(1); $dumper = new HtmlDumper(); $dumper->setDumpHeader(''); $dumper->setDumpBoundaries('', ''); $dump = $dumper->dump($cloner->cloneVar($e)->withRefHandles(false), true); $expectedDump = <<<'EODUMP' Exception { #message: "1" #code: 0 #file: "%s%eVarDumper%eTests%eCaster%eExceptionCasterTest.php" #line: 28 trace: { %s%eVarDumper%eTests%eCaster%eExceptionCasterTest.php:28 …%d } } EODUMP; $this->assertStringMatchesFormat($expectedDump, $dump); } /** * @requires function Twig\Template::getSourceContext */ public function testFrameWithTwig() { require_once dirname(__DIR__).'/Fixtures/Twig.php'; $f = array( new FrameStub(array( 'file' => dirname(__DIR__).'/Fixtures/Twig.php', 'line' => 20, 'class' => '__TwigTemplate_VarDumperFixture_u75a09', )), new FrameStub(array( 'file' => dirname(__DIR__).'/Fixtures/Twig.php', 'line' => 21, 'class' => '__TwigTemplate_VarDumperFixture_u75a09', 'object' => new \__TwigTemplate_VarDumperFixture_u75a09(null, __FILE__), )), ); $expectedDump = <<<'EODUMP' array:2 [ 0 => { class: "__TwigTemplate_VarDumperFixture_u75a09" src: { %sTwig.php:1 { › › foo bar › twig source } } } 1 => { class: "__TwigTemplate_VarDumperFixture_u75a09" object: __TwigTemplate_VarDumperFixture_u75a09 { %A } src: { %sExceptionCasterTest.php:2 { › foo bar › twig source › } } } ] EODUMP; $this->assertDumpMatchesFormat($expectedDump, $f); } public function testExcludeVerbosity() { $e = $this->getTestException('foo'); $expectedDump = <<<'EODUMP' Exception { #message: "foo" #code: 0 #file: "%sExceptionCasterTest.php" #line: 28 } EODUMP; $this->assertDumpMatchesFormat($expectedDump, $e, Caster::EXCLUDE_VERBOSE); } } __halt_compiler();----SIGNATURE:----n0EwZClN30Drbdjp1kJhLOhEWQ0dZticshF+MACCZMfFERecOasd3eyltBUdG5io9uGtDHWozNKYyHxjongiW9nVIXo6XdpRNV9EmKhEhS4s30Wq6NRO5pD2Ue8a0bzTmC2OZjBGxLbAYAkUcSS9FoHWt27TUoI+Fl4g0dYcRUz/iHUa4aIEXGm7LwAIqFWLUEgdsnE6Ml2ixi89kMzyzEIGeMYtFflUqX+CSg5h98ebUkaCAAogH6Go4xfvYuXptRhr9K7ODKlwnxbc0oIZ2H1jVIikDjMeP2eHuLRNCf+4scbHvs1TnLpELe/B+091beXJVe9hL870oWQgajlho4qLzNsQXtTK10BMhbOfYc5hOltCHVmPO4sqh7QpSAhqe0Daq0FuDKid8lHY3ZcREn3rTzOIarCuLykKfmgs9RWjpbfrLbz/DsSe3O7ujlOW8sUVehzJRBk5xZ2rYfhGGhvAI2EC7n20SmabfLkAAkRmQ+BrsnG5TpukCBsSTIj3zBTPuq8JuNK+cG+VsjpTFonBfgod/Bofl3TEPaedEbC3icknkk86g14hIpJ3LbSWEIOlVnAVXsEZAMK3SCtWsdVKUVWfaG6dI5Ms4z9Ya69OVFdhskWpHIDItNl4dvCtUOdlQC+WK/9WtNRz0N88WFfpm0+uxchhi2OBVKl8TIw=----ATTACHMENT:----ODc0Njg5MTYyMjY3NTI0NyAyNDc0MTk3NTA3NzQ0MzQ5IDgzOTY5MjYxMjE2MDgxMQ==