From 504c9f9b7f83abb6eae110841d8159a929ec57b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20B=C3=BCrk?= <stefan@buerk.tech>
Date: Fri, 22 Mar 2024 16:37:59 +0100
Subject: [PATCH] [TASK] Use `SiteConfiguration` from DI in
 `SiteBasedTestTrait`
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

`SiteBasedTestTrait` created a instance of the `SiteConfiguration`
using the PHP `new` keyword for writing functional test instance
site configurations.

It is possible, that the `SiteConfiguration` is retrieved from
the `Dependency Injection container` by code executed before
the test releated site configuration is written, which does not
reset the instance based `SiteConfiguration->$firstLevelCache`
property and later retrieving site configurations using the
`SiteFinder`, for example in rootline and other operations,
cannot find the test instance configurations.

This change now uses the `SiteConfiguration` from the test
instance `Dependency Injection container` which ensures that
the internal first level cache is properly reset on `write()`
actions.

Resolves: #103470
Releases: main, 12.4
Change-Id: I70368e56abd10e55f06d3813371c4538ad704136
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/83572
Reviewed-by: Benjamin Franzke <ben@bnf.dev>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benjamin Franzke <ben@bnf.dev>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Benni Mack <benni@typo3.org>
---
 .../Functional/SiteHandling/SiteBasedTestTrait.php | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/typo3/sysext/core/Tests/Functional/SiteHandling/SiteBasedTestTrait.php b/typo3/sysext/core/Tests/Functional/SiteHandling/SiteBasedTestTrait.php
index dd35f17e03d6..0b8c55a1fb0f 100644
--- a/typo3/sysext/core/Tests/Functional/SiteHandling/SiteBasedTestTrait.php
+++ b/typo3/sysext/core/Tests/Functional/SiteHandling/SiteBasedTestTrait.php
@@ -17,7 +17,6 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Functional\SiteHandling;
 
-use Psr\EventDispatcher\EventDispatcherInterface;
 use TYPO3\CMS\Core\Configuration\SiteConfiguration;
 use TYPO3\CMS\Core\Tests\Functional\Fixtures\Frontend\PhpError;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -60,12 +59,7 @@ trait SiteBasedTestTrait
         if (!empty($errorHandling)) {
             $configuration['errorHandling'] = $errorHandling;
         }
-        $siteConfiguration = new SiteConfiguration(
-            $this->instancePath . '/typo3conf/sites/',
-            $this->get(EventDispatcherInterface::class),
-            $this->get('cache.core')
-        );
-
+        $siteConfiguration = $this->get(SiteConfiguration::class);
         try {
             // ensure no previous site configuration influences the test
             GeneralUtility::rmdir($this->instancePath . '/typo3conf/sites/' . $identifier, true);
@@ -79,11 +73,7 @@ trait SiteBasedTestTrait
         string $identifier,
         array $overrides
     ): void {
-        $siteConfiguration = new SiteConfiguration(
-            $this->instancePath . '/typo3conf/sites/',
-            $this->get(EventDispatcherInterface::class),
-            $this->get('cache.core')
-        );
+        $siteConfiguration = $this->get(SiteConfiguration::class);
         $configuration = $siteConfiguration->load($identifier);
         $configuration = array_merge($configuration, $overrides);
         try {
-- 
GitLab