HtmlErrorRendererTest.php 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Component\ErrorHandler\Tests\ErrorRenderer;
  11. use PHPUnit\Framework\TestCase;
  12. use Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer;
  13. class HtmlErrorRendererTest extends TestCase
  14. {
  15. /**
  16. * @dataProvider getRenderData
  17. */
  18. public function testRender(\Throwable $exception, HtmlErrorRenderer $errorRenderer, string $expected)
  19. {
  20. $this->assertStringMatchesFormat($expected, $errorRenderer->render($exception)->getAsString());
  21. }
  22. public static function getRenderData(): iterable
  23. {
  24. $expectedDebug = <<<HTML
  25. <!-- Foo (500 Internal Server Error) -->
  26. <!DOCTYPE html>
  27. <html lang="en">
  28. %A<title>Foo (500 Internal Server Error)</title>
  29. %A<div class="trace trace-as-html" id="trace-box-1">%A
  30. <!-- Foo (500 Internal Server Error) -->
  31. HTML;
  32. $expectedNonDebug = <<<HTML
  33. <!DOCTYPE html>
  34. <html lang="en">
  35. %A<title>An Error Occurred: Internal Server Error</title>
  36. %A<h2>The server returned a "500 Internal Server Error".</h2>%A
  37. HTML;
  38. yield '->render() returns the HTML content WITH stack traces in debug mode' => [
  39. new \RuntimeException('Foo'),
  40. new HtmlErrorRenderer(true),
  41. $expectedDebug,
  42. ];
  43. yield '->render() returns the HTML content WITHOUT stack traces in non-debug mode' => [
  44. new \RuntimeException('Foo'),
  45. new HtmlErrorRenderer(false),
  46. $expectedNonDebug,
  47. ];
  48. }
  49. }