ReportDriver.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace Facade\FlareClient\Tests\TestClasses;
  3. use Facade\FlareClient\Tests\TestCase;
  4. use PHPUnit\Framework\Assert;
  5. use Spatie\Snapshots\Drivers\YamlDriver;
  6. use Symfony\Component\Yaml\Yaml;
  7. class ReportDriver extends YamlDriver
  8. {
  9. public function serialize($data): string
  10. {
  11. $data = $this->removeTimeValues($data);
  12. $data = $this->emptyStacktrace($data);
  13. $data = $this->removePhpunitArguments($data);
  14. $data = $this->freezeLanguageVersion($data);
  15. $yaml = parent::serialize($data);
  16. return TestCase::makePathsRelative($yaml);
  17. }
  18. public function match($expected, $actual)
  19. {
  20. $actual = $this->removeTimeValues($actual);
  21. $actual = $this->emptyStacktrace($actual);
  22. $actual = $this->removePhpunitArguments($actual);
  23. $actual = $this->freezeLanguageVersion($actual);
  24. if (is_array($actual)) {
  25. $actual = Yaml::dump($actual, PHP_INT_MAX);
  26. }
  27. $actual = TestCase::makePathsRelative($actual);
  28. Assert::assertEquals($expected, $actual);
  29. }
  30. protected function removeTimeValues(array $data): array
  31. {
  32. array_walk_recursive($data, function (&$value, $key) {
  33. if ($key === 'time' || $key === 'microtime') {
  34. $value = 1234;
  35. }
  36. });
  37. return $data;
  38. }
  39. protected function emptyStacktrace(array $data): array
  40. {
  41. $data['stacktrace'] = [];
  42. return $data;
  43. }
  44. protected function removePhpunitArguments(array $data): array
  45. {
  46. $data['context']['arguments'] = ['[phpunit arguments removed]'];
  47. return $data;
  48. }
  49. protected function freezeLanguageVersion(array $data): array
  50. {
  51. data_set($data, 'language_version', '7.3.2', true);
  52. return $data;
  53. }
  54. }