Skip to content

Commit

Permalink
[TASK] Use SiteConfiguration from DI in SiteBasedTestTrait
Browse files Browse the repository at this point in the history
`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/+/83540
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: core-ci <typo3@b13.com>
  • Loading branch information
sbuerk committed Mar 22, 2024
1 parent f6015fd commit 77bbe4e
Showing 1 changed file with 2 additions and 12 deletions.
Expand Up @@ -17,7 +17,6 @@

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;
Expand Down Expand Up @@ -60,12 +59,7 @@ protected function writeSiteConfiguration(
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);
Expand All @@ -79,11 +73,7 @@ protected function mergeSiteConfiguration(
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 {
Expand Down

0 comments on commit 77bbe4e

Please sign in to comment.