From eb308bef68aa0c00d67798629633990745357d12 Mon Sep 17 00:00:00 2001 From: Sebastian Rosskopf Date: Sat, 14 Mar 2026 10:34:40 +0100 Subject: [PATCH 1/3] [BUGFIX] Move test fixtures to separate test extension Remove test fixture services from global Configuration/Services.yaml Remove test fixture persistence mappings from global Extbase config Structure test fixtures as mini-extension in Tests/Functional/Fixtures/ Update tests to load fixtures extension via testExtensionsToLoad This fixes crashes when the extension is used as a dependency, where autoload-dev classes are not available but were being referenced in global configuration files. --- Configuration/Extbase/Persistence/Classes.php | 7 ------- Configuration/Services.yaml | 4 ---- .../Repository/AbstractObjectRepositoryTest.php | 1 + .../Extbase/Persistence/Classes.php | 12 ++++++++++++ .../Fixtures/Configuration/Services.yaml | 8 ++++++++ Tests/Functional/Fixtures/ext_emconf.php | 16 ++++++++++++++++ .../Performance/RepositoryPerformanceTest.php | 5 ++++- 7 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 Tests/Functional/Fixtures/Configuration/Extbase/Persistence/Classes.php create mode 100644 Tests/Functional/Fixtures/Configuration/Services.yaml create mode 100644 Tests/Functional/Fixtures/ext_emconf.php diff --git a/Configuration/Extbase/Persistence/Classes.php b/Configuration/Extbase/Persistence/Classes.php index 75b5662..925d5fb 100644 --- a/Configuration/Extbase/Persistence/Classes.php +++ b/Configuration/Extbase/Persistence/Classes.php @@ -67,11 +67,4 @@ ], ], ], - // Test fixture classes — map to pages table (only loaded in test context) - \Zeroseven\Pagebased\Tests\Functional\Fixtures\Classes\TestObject::class => [ - 'tableName' => \Zeroseven\Pagebased\Domain\Model\AbstractPage::TABLE_NAME, - ], - \Zeroseven\Pagebased\Tests\Functional\Fixtures\Classes\TestCategory::class => [ - 'tableName' => \Zeroseven\Pagebased\Domain\Model\AbstractPage::TABLE_NAME, - ], ]; diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml index 9a03bb0..3430f75 100644 --- a/Configuration/Services.yaml +++ b/Configuration/Services.yaml @@ -7,10 +7,6 @@ services: Zeroseven\Pagebased\: resource: '../Classes/*' - Zeroseven\Pagebased\Tests\Functional\Fixtures\Classes\: - resource: '../Tests/Functional/Fixtures/Classes/*' - public: true - Zeroseven\Pagebased\Middleware\RssFeed: arguments: $cache: '@cache.pagebased_rss_feed' diff --git a/Tests/Functional/Domain/Repository/AbstractObjectRepositoryTest.php b/Tests/Functional/Domain/Repository/AbstractObjectRepositoryTest.php index 08a0ce8..a047ef1 100644 --- a/Tests/Functional/Domain/Repository/AbstractObjectRepositoryTest.php +++ b/Tests/Functional/Domain/Repository/AbstractObjectRepositoryTest.php @@ -39,6 +39,7 @@ class AbstractObjectRepositoryTest extends FunctionalTestCase { protected array $testExtensionsToLoad = [ 'typo3conf/ext/pagebased', + 'typo3conf/ext/pagebased/Tests/Functional/Fixtures', ]; protected array $coreExtensionsToLoad = [ diff --git a/Tests/Functional/Fixtures/Configuration/Extbase/Persistence/Classes.php b/Tests/Functional/Fixtures/Configuration/Extbase/Persistence/Classes.php new file mode 100644 index 0000000..4400927 --- /dev/null +++ b/Tests/Functional/Fixtures/Configuration/Extbase/Persistence/Classes.php @@ -0,0 +1,12 @@ + [ + 'tableName' => \Zeroseven\Pagebased\Domain\Model\AbstractPage::TABLE_NAME, + ], + \Zeroseven\Pagebased\Tests\Functional\Fixtures\Classes\TestCategory::class => [ + 'tableName' => \Zeroseven\Pagebased\Domain\Model\AbstractPage::TABLE_NAME, + ], +]; diff --git a/Tests/Functional/Fixtures/Configuration/Services.yaml b/Tests/Functional/Fixtures/Configuration/Services.yaml new file mode 100644 index 0000000..b87cc8e --- /dev/null +++ b/Tests/Functional/Fixtures/Configuration/Services.yaml @@ -0,0 +1,8 @@ +services: + _defaults: + autowire: true + autoconfigure: true + public: true + + Zeroseven\Pagebased\Tests\Functional\Fixtures\Classes\: + resource: '../Classes/*' diff --git a/Tests/Functional/Fixtures/ext_emconf.php b/Tests/Functional/Fixtures/ext_emconf.php new file mode 100644 index 0000000..0dde0bb --- /dev/null +++ b/Tests/Functional/Fixtures/ext_emconf.php @@ -0,0 +1,16 @@ + 'Pagebased Test Fixtures', + 'description' => 'Test fixtures for pagebased functional tests', + 'category' => 'misc', + 'version' => '1.0.0', + 'state' => 'stable', + 'author' => 'zeroseven', + 'author_email' => 'typo3@zeroseven.de', + 'constraints' => [ + 'depends' => [ + 'typo3' => '12.4.0-12.99.99', + ], + ], +]; diff --git a/Tests/Functional/Performance/RepositoryPerformanceTest.php b/Tests/Functional/Performance/RepositoryPerformanceTest.php index 01eef26..999eac0 100644 --- a/Tests/Functional/Performance/RepositoryPerformanceTest.php +++ b/Tests/Functional/Performance/RepositoryPerformanceTest.php @@ -29,7 +29,10 @@ */ final class RepositoryPerformanceTest extends FunctionalTestCase { - protected array $testExtensionsToLoad = ['typo3conf/ext/pagebased']; + protected array $testExtensionsToLoad = [ + 'typo3conf/ext/pagebased', + 'typo3conf/ext/pagebased/Tests/Functional/Fixtures', + ]; protected array $configurationToUseInTestInstance = [ 'DB' => [ From dbd003854d6649cfb26a4d35fc9873ddebd2506e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Ro=C3=9Fkopf?= Date: Sat, 14 Mar 2026 10:49:46 +0100 Subject: [PATCH 2/3] Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../Domain/Repository/AbstractObjectRepositoryTest.php | 6 +++--- Tests/Functional/Fixtures/ext_emconf.php | 1 + Tests/Functional/Performance/RepositoryPerformanceTest.php | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Tests/Functional/Domain/Repository/AbstractObjectRepositoryTest.php b/Tests/Functional/Domain/Repository/AbstractObjectRepositoryTest.php index a047ef1..72d3082 100644 --- a/Tests/Functional/Domain/Repository/AbstractObjectRepositoryTest.php +++ b/Tests/Functional/Domain/Repository/AbstractObjectRepositoryTest.php @@ -24,7 +24,7 @@ * - Default limit of 1000 when maxItems is 0 * - Identifier constraint (_pagebased_registration = 'test_news') * - * Fixtures: Tests/Functional/Fixtures/Database/pages_objects.csv + * Fixtures: Tests/Functional/fixtures/Database/pages_objects.csv * uid 10 → category (doktype=199, _pagebased_site=1) * uid 20-22 → visible objects in category 10 (_pagebased_registration=test_news) * uid 23 → hidden object (hidden=1) @@ -39,7 +39,7 @@ class AbstractObjectRepositoryTest extends FunctionalTestCase { protected array $testExtensionsToLoad = [ 'typo3conf/ext/pagebased', - 'typo3conf/ext/pagebased/Tests/Functional/Fixtures', + 'typo3conf/ext/pagebased/Tests/Functional/fixtures', ]; protected array $coreExtensionsToLoad = [ @@ -57,7 +57,7 @@ protected function setUp(): void // resolve TestObjectRepository → 'test_news'. $this->bootstrapTestRegistration(); - $this->importCSVDataSet(__DIR__ . '/../../Fixtures/Database/pages_objects.csv'); + $this->importCSVDataSet(__DIR__ . '/../../fixtures/Database/pages_objects.csv'); $this->repository = $this->get(TestObjectRepository::class); } diff --git a/Tests/Functional/Fixtures/ext_emconf.php b/Tests/Functional/Fixtures/ext_emconf.php index 0dde0bb..9b41e63 100644 --- a/Tests/Functional/Fixtures/ext_emconf.php +++ b/Tests/Functional/Fixtures/ext_emconf.php @@ -11,6 +11,7 @@ 'constraints' => [ 'depends' => [ 'typo3' => '12.4.0-12.99.99', + 'pagebased' => '', ], ], ]; diff --git a/Tests/Functional/Performance/RepositoryPerformanceTest.php b/Tests/Functional/Performance/RepositoryPerformanceTest.php index 999eac0..2829b41 100644 --- a/Tests/Functional/Performance/RepositoryPerformanceTest.php +++ b/Tests/Functional/Performance/RepositoryPerformanceTest.php @@ -31,7 +31,7 @@ final class RepositoryPerformanceTest extends FunctionalTestCase { protected array $testExtensionsToLoad = [ 'typo3conf/ext/pagebased', - 'typo3conf/ext/pagebased/Tests/Functional/Fixtures', + 'typo3conf/ext/pagebased/Tests/Functional/pagebased_test_fixtures', ]; protected array $configurationToUseInTestInstance = [ @@ -51,7 +51,7 @@ final class RepositoryPerformanceTest extends FunctionalTestCase protected function setUp(): void { parent::setUp(); - $this->importCSVDataSet(__DIR__ . '/../Fixtures/Database/pages_many_objects.csv'); + $this->importCSVDataSet(__DIR__ . '/../pagebased_test_fixtures/Database/pages_many_objects.csv'); $this->bootstrapTestRegistration(); $this->repository = $this->get(TestObjectRepository::class); QueryCountingMiddleware::reset(); From 9c9ab041c57395d3d9029c60e30d692760b39947 Mon Sep 17 00:00:00 2001 From: Sebastian Rosskopf Date: Sat, 14 Mar 2026 11:03:33 +0100 Subject: [PATCH 3/3] Revert "Apply suggestions from code review" This reverts commit dbd003854d6649cfb26a4d35fc9873ddebd2506e. --- .../Domain/Repository/AbstractObjectRepositoryTest.php | 6 +++--- Tests/Functional/Fixtures/ext_emconf.php | 1 - Tests/Functional/Performance/RepositoryPerformanceTest.php | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Tests/Functional/Domain/Repository/AbstractObjectRepositoryTest.php b/Tests/Functional/Domain/Repository/AbstractObjectRepositoryTest.php index 72d3082..a047ef1 100644 --- a/Tests/Functional/Domain/Repository/AbstractObjectRepositoryTest.php +++ b/Tests/Functional/Domain/Repository/AbstractObjectRepositoryTest.php @@ -24,7 +24,7 @@ * - Default limit of 1000 when maxItems is 0 * - Identifier constraint (_pagebased_registration = 'test_news') * - * Fixtures: Tests/Functional/fixtures/Database/pages_objects.csv + * Fixtures: Tests/Functional/Fixtures/Database/pages_objects.csv * uid 10 → category (doktype=199, _pagebased_site=1) * uid 20-22 → visible objects in category 10 (_pagebased_registration=test_news) * uid 23 → hidden object (hidden=1) @@ -39,7 +39,7 @@ class AbstractObjectRepositoryTest extends FunctionalTestCase { protected array $testExtensionsToLoad = [ 'typo3conf/ext/pagebased', - 'typo3conf/ext/pagebased/Tests/Functional/fixtures', + 'typo3conf/ext/pagebased/Tests/Functional/Fixtures', ]; protected array $coreExtensionsToLoad = [ @@ -57,7 +57,7 @@ protected function setUp(): void // resolve TestObjectRepository → 'test_news'. $this->bootstrapTestRegistration(); - $this->importCSVDataSet(__DIR__ . '/../../fixtures/Database/pages_objects.csv'); + $this->importCSVDataSet(__DIR__ . '/../../Fixtures/Database/pages_objects.csv'); $this->repository = $this->get(TestObjectRepository::class); } diff --git a/Tests/Functional/Fixtures/ext_emconf.php b/Tests/Functional/Fixtures/ext_emconf.php index 9b41e63..0dde0bb 100644 --- a/Tests/Functional/Fixtures/ext_emconf.php +++ b/Tests/Functional/Fixtures/ext_emconf.php @@ -11,7 +11,6 @@ 'constraints' => [ 'depends' => [ 'typo3' => '12.4.0-12.99.99', - 'pagebased' => '', ], ], ]; diff --git a/Tests/Functional/Performance/RepositoryPerformanceTest.php b/Tests/Functional/Performance/RepositoryPerformanceTest.php index 2829b41..999eac0 100644 --- a/Tests/Functional/Performance/RepositoryPerformanceTest.php +++ b/Tests/Functional/Performance/RepositoryPerformanceTest.php @@ -31,7 +31,7 @@ final class RepositoryPerformanceTest extends FunctionalTestCase { protected array $testExtensionsToLoad = [ 'typo3conf/ext/pagebased', - 'typo3conf/ext/pagebased/Tests/Functional/pagebased_test_fixtures', + 'typo3conf/ext/pagebased/Tests/Functional/Fixtures', ]; protected array $configurationToUseInTestInstance = [ @@ -51,7 +51,7 @@ final class RepositoryPerformanceTest extends FunctionalTestCase protected function setUp(): void { parent::setUp(); - $this->importCSVDataSet(__DIR__ . '/../pagebased_test_fixtures/Database/pages_many_objects.csv'); + $this->importCSVDataSet(__DIR__ . '/../Fixtures/Database/pages_many_objects.csv'); $this->bootstrapTestRegistration(); $this->repository = $this->get(TestObjectRepository::class); QueryCountingMiddleware::reset();