From 34f1e9a7f2d541d7e3d0863386fe4e3ed11bfa99 Mon Sep 17 00:00:00 2001 From: nuno maduro Date: Fri, 1 May 2026 21:51:09 +0100 Subject: [PATCH] fix --- src/Plugins/Tia.php | 2 +- src/Plugins/Tia/CoverageMerger.php | 28 +++++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/Plugins/Tia.php b/src/Plugins/Tia.php index 9300a494..1fbed909 100644 --- a/src/Plugins/Tia.php +++ b/src/Plugins/Tia.php @@ -57,7 +57,7 @@ final class Tia implements AddsOutput, HandlesArguments, Terminable /** Sentinel dropped by a recording worker without a usable coverage driver. */ private const string KEY_WORKER_NO_DRIVER_PREFIX = 'worker-no-driver-'; - public const string KEY_COVERAGE_CACHE = 'coverage.bin'; + public const string KEY_COVERAGE_CACHE = 'coverage.bin.gz'; public const string KEY_COVERAGE_MARKER = 'coverage.marker'; diff --git a/src/Plugins/Tia/CoverageMerger.php b/src/Plugins/Tia/CoverageMerger.php index 1f2c2748..6efc5a17 100644 --- a/src/Plugins/Tia/CoverageMerger.php +++ b/src/Plugins/Tia/CoverageMerger.php @@ -34,13 +34,21 @@ final class CoverageMerger $current = self::requireCoverage($reportPath); if ($current instanceof CodeCoverage) { - $state->write(Tia::KEY_COVERAGE_CACHE, serialize($current)); + $state->write(Tia::KEY_COVERAGE_CACHE, self::compress(serialize($current))); } return; } - $cached = self::unserializeCoverage($cachedBytes); + $decoded = self::decompress($cachedBytes); + + if ($decoded === null) { + $state->delete(Tia::KEY_COVERAGE_CACHE); + + return; + } + + $cached = self::unserializeCoverage($decoded); $current = self::requireCoverage($reportPath); if (! $cached instanceof CodeCoverage || ! $current instanceof CodeCoverage) { @@ -59,7 +67,21 @@ final class CoverageMerger $reportPath, 'write(Tia::KEY_COVERAGE_CACHE, $serialised); + $state->write(Tia::KEY_COVERAGE_CACHE, self::compress($serialised)); + } + + private static function compress(string $bytes): string + { + $compressed = @gzencode($bytes); + + return $compressed === false ? $bytes : $compressed; + } + + private static function decompress(string $bytes): ?string + { + $decoded = @gzdecode($bytes); + + return $decoded === false ? null : $decoded; } /**