BacktraceDumperTest.php 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace Test\Michel\Debug;
  3. use Michel\Debug\BacktraceDumper;
  4. use Michel\Debug\Output\BacktraceOutput\CliOutput;
  5. use Michel\Debug\VarDumper;
  6. use Michel\UniTester\TestCase;
  7. class BacktraceDumperTest extends TestCase
  8. {
  9. protected function setUp(): void
  10. {
  11. // TODO: Implement setUp() method.
  12. }
  13. protected function tearDown(): void
  14. {
  15. // TODO: Implement tearDown() method.
  16. }
  17. protected function execute(): void
  18. {
  19. $fakeTrace = [
  20. [
  21. 'file' => '/var/www/app/src/Controller/HomeController.php',
  22. 'line' => 42,
  23. 'function' => 'indexAction',
  24. 'class' => 'App\\Controller\\HomeController',
  25. 'object' => (object) [],
  26. 'type' => '->',
  27. 'args' => [
  28. ['type' => 'string', 'value' => 'Hello world'],
  29. ['type' => 'int', 'value' => 123],
  30. ],
  31. ],
  32. [
  33. 'file' => '/var/www/app/vendor/symfony/http-kernel/HttpKernel.php',
  34. 'line' => 158,
  35. 'function' => 'handleRaw',
  36. 'class' => 'Symfony\\Component\\HttpKernel\\HttpKernel',
  37. 'object' => (object) [],
  38. 'type' => '->',
  39. 'args' => [],
  40. ],
  41. [
  42. 'file' => '/var/www/app/vendor/symfony/http-kernel/HttpKernel.php',
  43. 'line' => 80,
  44. 'function' => 'handle',
  45. 'class' => 'Symfony\\Component\\HttpKernel\\HttpKernel',
  46. 'object' => (object) [],
  47. 'type' => '->',
  48. 'args' => [
  49. ['type' => 'string', 'value' => 'prod'],
  50. ['type' => 'bool', 'value' => true],
  51. ],
  52. ],
  53. [
  54. 'file' => '/var/www/app/public/index.php',
  55. 'line' => 25,
  56. 'function' => '{closure}',
  57. 'args' => [],
  58. ],
  59. [
  60. 'file' => '/var/www/app/public/index.php',
  61. 'line' => 15,
  62. 'function' => 'require_once',
  63. 'args' => ['/var/www/app/config/bootstrap.php'],
  64. ],
  65. ];
  66. $output = new CliOutput(function ($dumped) use($fakeTrace) {
  67. $this->assertEquals(base64_encode($dumped), 'QmFja3RyYWNlIChsYXN0IDUgY2FsbHMpOgoKCiMxCiAgRmlsZSAgICA6IC92YXIvd3d3L2FwcC9wdWJsaWMvaW5kZXgucGhwOjE1CiAgQ2FsbCAgICA6IHJlcXVpcmVfb25jZQojMgogIEZpbGUgICAgOiAvdmFyL3d3dy9hcHAvcHVibGljL2luZGV4LnBocDoyNQogIENhbGwgICAgOiB7Y2xvc3VyZX0KIzMKICBGaWxlICAgIDogL3Zhci93d3cvYXBwL3ZlbmRvci9zeW1mb255L2h0dHAta2VybmVsL0h0dHBLZXJuZWwucGhwOjgwCiAgQ2FsbCAgICA6IFN5bWZvbnlcQ29tcG9uZW50XEh0dHBLZXJuZWxcSHR0cEtlcm5lbC0+aGFuZGxlCiM0CiAgRmlsZSAgICA6IC92YXIvd3d3L2FwcC92ZW5kb3Ivc3ltZm9ueS9odHRwLWtlcm5lbC9IdHRwS2VybmVsLnBocDoxNTgKICBDYWxsICAgIDogU3ltZm9ueVxDb21wb25lbnRcSHR0cEtlcm5lbFxIdHRwS2VybmVsLT5oYW5kbGVSYXcKIzUKICBGaWxlICAgIDogL3Zhci93d3cvYXBwL3NyYy9Db250cm9sbGVyL0hvbWVDb250cm9sbGVyLnBocDo0MgogIENhbGwgICAgOiBBcHBcQ29udHJvbGxlclxIb21lQ29udHJvbGxlci0+aW5kZXhBY3Rpb24K');
  68. });
  69. $varDumper = new BacktraceDumper($output);
  70. $varDumper->dump(10, 0, $fakeTrace);
  71. $output = new CliOutput(function ($dumped) use($fakeTrace) {
  72. $this->assertEquals(base64_encode($dumped), "QmFja3RyYWNlIChsYXN0IDIgY2FsbHMpOgoKCiMxCiAgRmlsZSAgICA6IC92YXIvd3d3L2FwcC92ZW5kb3Ivc3ltZm9ueS9odHRwLWtlcm5lbC9IdHRwS2VybmVsLnBocDoxNTgKICBDYWxsICAgIDogU3ltZm9ueVxDb21wb25lbnRcSHR0cEtlcm5lbFxIdHRwS2VybmVsLT5oYW5kbGVSYXcKIzIKICBGaWxlICAgIDogL3Zhci93d3cvYXBwL3NyYy9Db250cm9sbGVyL0hvbWVDb250cm9sbGVyLnBocDo0MgogIENhbGwgICAgOiBBcHBcQ29udHJvbGxlclxIb21lQ29udHJvbGxlci0+aW5kZXhBY3Rpb24K");
  73. });
  74. $varDumper = new BacktraceDumper($output);
  75. $varDumper->dump(2, 0, $fakeTrace);
  76. }
  77. }