From 46337b8085726d3c958eb9ef21716b7895335424 Mon Sep 17 00:00:00 2001 From: luke Date: Fri, 30 Jul 2021 16:32:00 +0100 Subject: [PATCH] Removes pest from stack traces --- src/Logging/TeamCity.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/Logging/TeamCity.php b/src/Logging/TeamCity.php index a8713172..d763c6ec 100644 --- a/src/Logging/TeamCity.php +++ b/src/Logging/TeamCity.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace Pest\Logging; +use ReflectionClass; +use ReflectionProperty; use function getmypid; use Pest\Concerns\Testable; use function Pest\version; @@ -292,6 +294,7 @@ final class TeamCity extends DefaultResultPrinter $this->lastTestFailed = true; $this->writePestTestOutput($test->getName(), 'fg-red, bold', '⨯'); + $this->removePestFromStackTrace($t); $this->phpunitTeamCity->addError($test, $t, $time); } @@ -300,9 +303,28 @@ final class TeamCity extends DefaultResultPrinter $this->lastTestFailed = true; $this->writePestTestOutput($test->getName(), 'fg-red, bold', '⨯'); + $this->removePestFromStackTrace($e); $this->phpunitTeamCity->addFailure($test, $e, $time); } + private function removePestFromStackTrace(Throwable $e): void + { + $property = new ReflectionProperty($e, 'serializableTrace'); + $property->setAccessible(true); + $trace = $property->getValue($e); + + $cleanedTrace = []; + foreach ($trace as $item) { + if (key_exists('file', $item) && mb_strpos($item['file'], 'vendor/pestphp/pest/') > 0) { + continue; + } + + $cleanedTrace[] = $item; + } + + $property->setValue($e, $cleanedTrace); + } + /** * @phpstan-ignore-next-line *