92cf6fb88299c27caa5464b8cb80adffdaf8e73a
[yaffs-website] / vendor / symfony / var-dumper / Tests / Caster / ExceptionCasterTest.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\VarDumper\Tests\Caster;
13
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\VarDumper\Caster\Caster;
16 use Symfony\Component\VarDumper\Caster\ExceptionCaster;
17 use Symfony\Component\VarDumper\Caster\FrameStub;
18 use Symfony\Component\VarDumper\Cloner\VarCloner;
19 use Symfony\Component\VarDumper\Dumper\HtmlDumper;
20 use Symfony\Component\VarDumper\Test\VarDumperTestTrait;
21
22 class ExceptionCasterTest extends TestCase
23 {
24     use VarDumperTestTrait;
25
26     private function getTestException($msg, &$ref = null)
27     {
28         return new \Exception(''.$msg);
29     }
30
31     protected function tearDown()
32     {
33         ExceptionCaster::$srcContext = 1;
34         ExceptionCaster::$traceArgs = true;
35     }
36
37     public function testDefaultSettings()
38     {
39         $ref = array('foo');
40         $e = $this->getTestException('foo', $ref);
41
42         $expectedDump = <<<'EODUMP'
43 Exception {
44   #message: "foo"
45   #code: 0
46   #file: "%sExceptionCasterTest.php"
47   #line: 28
48   trace: {
49     %s%eTests%eCaster%eExceptionCasterTest.php:28 {
50       › {
51       ›     return new \Exception(''.$msg);
52       › }
53     }
54     %s%eTests%eCaster%eExceptionCasterTest.php:40 { …}
55     Symfony\Component\VarDumper\Tests\Caster\ExceptionCasterTest->testDefaultSettings() {}
56 %A
57 EODUMP;
58
59         $this->assertDumpMatchesFormat($expectedDump, $e);
60         $this->assertSame(array('foo'), $ref);
61     }
62
63     public function testSeek()
64     {
65         $e = $this->getTestException(2);
66
67         $expectedDump = <<<'EODUMP'
68 {
69   %s%eTests%eCaster%eExceptionCasterTest.php:28 {
70     › {
71     ›     return new \Exception(''.$msg);
72     › }
73   }
74   %s%eTests%eCaster%eExceptionCasterTest.php:65 { …}
75   Symfony\Component\VarDumper\Tests\Caster\ExceptionCasterTest->testSeek() {}
76 %A
77 EODUMP;
78
79         $this->assertStringMatchesFormat($expectedDump, $this->getDump($e, 'trace'));
80     }
81
82     public function testNoArgs()
83     {
84         $e = $this->getTestException(1);
85         ExceptionCaster::$traceArgs = false;
86
87         $expectedDump = <<<'EODUMP'
88 Exception {
89   #message: "1"
90   #code: 0
91   #file: "%sExceptionCasterTest.php"
92   #line: 28
93   trace: {
94     %sExceptionCasterTest.php:28 {
95       › {
96       ›     return new \Exception(''.$msg);
97       › }
98     }
99     %s%eTests%eCaster%eExceptionCasterTest.php:84 { …}
100     Symfony\Component\VarDumper\Tests\Caster\ExceptionCasterTest->testNoArgs() {}
101 %A
102 EODUMP;
103
104         $this->assertDumpMatchesFormat($expectedDump, $e);
105     }
106
107     public function testNoSrcContext()
108     {
109         $e = $this->getTestException(1);
110         ExceptionCaster::$srcContext = -1;
111
112         $expectedDump = <<<'EODUMP'
113 Exception {
114   #message: "1"
115   #code: 0
116   #file: "%sExceptionCasterTest.php"
117   #line: 28
118   trace: {
119     %s%eTests%eCaster%eExceptionCasterTest.php:28
120     %s%eTests%eCaster%eExceptionCasterTest.php:%d
121 %A
122 EODUMP;
123
124         $this->assertDumpMatchesFormat($expectedDump, $e);
125     }
126
127     public function testHtmlDump()
128     {
129         $e = $this->getTestException(1);
130         ExceptionCaster::$srcContext = -1;
131
132         $cloner = new VarCloner();
133         $cloner->setMaxItems(1);
134         $dumper = new HtmlDumper();
135         $dumper->setDumpHeader('<foo></foo>');
136         $dumper->setDumpBoundaries('<bar>', '</bar>');
137         $dump = $dumper->dump($cloner->cloneVar($e)->withRefHandles(false), true);
138
139         $expectedDump = <<<'EODUMP'
140 <foo></foo><bar><span class=sf-dump-note>Exception</span> {<samp>
141   #<span class=sf-dump-protected title="Protected property">message</span>: "<span class=sf-dump-str>1</span>"
142   #<span class=sf-dump-protected title="Protected property">code</span>: <span class=sf-dump-num>0</span>
143   #<span class=sf-dump-protected title="Protected property">file</span>: "<span class=sf-dump-str title="%sExceptionCasterTest.php
144 %d characters"><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%s%eVarDumper</span><span class=sf-dump-ellipsis>%e</span>Tests%eCaster%eExceptionCasterTest.php</span>"
145   #<span class=sf-dump-protected title="Protected property">line</span>: <span class=sf-dump-num>28</span>
146   <span class=sf-dump-meta>trace</span>: {<samp>
147     <span class=sf-dump-meta title="%sExceptionCasterTest.php
148 Stack level %d."><span class="sf-dump-ellipsis sf-dump-ellipsis-path">%s%eVarDumper</span><span class=sf-dump-ellipsis>%e</span>Tests%eCaster%eExceptionCasterTest.php</span>:<span class=sf-dump-num>28</span>
149      &hellip;%d
150   </samp>}
151 </samp>}
152 </bar>
153 EODUMP;
154
155         $this->assertStringMatchesFormat($expectedDump, $dump);
156     }
157
158     /**
159      * @requires function Twig\Template::getSourceContext
160      */
161     public function testFrameWithTwig()
162     {
163         require_once dirname(__DIR__).'/Fixtures/Twig.php';
164
165         $f = array(
166             new FrameStub(array(
167                 'file' => dirname(__DIR__).'/Fixtures/Twig.php',
168                 'line' => 20,
169                 'class' => '__TwigTemplate_VarDumperFixture_u75a09',
170             )),
171             new FrameStub(array(
172                 'file' => dirname(__DIR__).'/Fixtures/Twig.php',
173                 'line' => 21,
174                 'class' => '__TwigTemplate_VarDumperFixture_u75a09',
175                 'object' => new \__TwigTemplate_VarDumperFixture_u75a09(null, __FILE__),
176             )),
177         );
178
179         $expectedDump = <<<'EODUMP'
180 array:2 [
181   0 => {
182     class: "__TwigTemplate_VarDumperFixture_u75a09"
183     src: {
184       %sTwig.php:1 {
185         › 
186         › foo bar
187         ›   twig source
188       }
189     }
190   }
191   1 => {
192     class: "__TwigTemplate_VarDumperFixture_u75a09"
193     object: __TwigTemplate_VarDumperFixture_u75a09 {
194     %A
195     }
196     src: {
197       %sExceptionCasterTest.php:2 {
198         › foo bar
199         ›   twig source
200         › 
201       }
202     }
203   }
204 ]
205
206 EODUMP;
207
208         $this->assertDumpMatchesFormat($expectedDump, $f);
209     }
210
211     public function testExcludeVerbosity()
212     {
213         $e = $this->getTestException('foo');
214
215         $expectedDump = <<<'EODUMP'
216 Exception {
217   #message: "foo"
218   #code: 0
219   #file: "%sExceptionCasterTest.php"
220   #line: 28
221 }
222 EODUMP;
223
224         $this->assertDumpMatchesFormat($expectedDump, $e, Caster::EXCLUDE_VERBOSE);
225     }
226 }