From b5704104df027e4e5e0b137a00b7996909c41d1e Mon Sep 17 00:00:00 2001 From: Jan Nedbal Date: Tue, 18 Mar 2025 17:19:53 +0100 Subject: [PATCH] ResultCacheManager: fix meta key difference for projectConfig --- .../ResultCache/ResultCacheManager.php | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/Analyser/ResultCache/ResultCacheManager.php b/src/Analyser/ResultCache/ResultCacheManager.php index 80ea03ac06..ff75f5a0f0 100644 --- a/src/Analyser/ResultCache/ResultCacheManager.php +++ b/src/Analyser/ResultCache/ResultCacheManager.php @@ -312,18 +312,27 @@ public function restore(array $allAnalysedFiles, bool $debug, bool $onlyFiles, ? } /** - * @param mixed[] $cachedMeta - * @param mixed[] $currentMeta + * @param mixed[]|null $projectConfig */ - private function isMetaDifferent(array $cachedMeta, array $currentMeta): bool + private function normalizeMetaProjectConfig(?array $projectConfig): ?string { - $projectConfig = $currentMeta['projectConfig']; if ($projectConfig !== null) { - ksort($currentMeta['projectConfig']); + ksort($projectConfig); - $currentMeta['projectConfig'] = Neon::encode($currentMeta['projectConfig']); + return Neon::encode($projectConfig); } + return null; + } + + /** + * @param mixed[] $cachedMeta + * @param mixed[] $currentMeta + */ + private function isMetaDifferent(array $cachedMeta, array $currentMeta): bool + { + $currentMeta['projectConfig'] = $this->normalizeMetaProjectConfig($currentMeta['projectConfig']); + return $cachedMeta !== $currentMeta; } @@ -337,6 +346,10 @@ private function getMetaKeyDifferences(array $cachedMeta, array $currentMeta): a { $diffs = []; foreach ($cachedMeta as $key => $value) { + if ($key === 'projectConfig') { + $value = $this->normalizeMetaProjectConfig($value); + } + if (!array_key_exists($key, $currentMeta)) { $diffs[] = $key; continue;