Skip to content

Commit 9b2ce23

Browse files
PKuhlmayclaude
andcommitted
[TASK] Fix #729: Add extbase as dependency to generated extensions
Always include typo3/cms-extbase in generated extensions since all Extension Builder extensions use Extbase by definition. Adds the dependency to composer.json (require) and ext_emconf.php (depends). Also removes dead v12 code from getVersionConstraints() since the UI only offers TYPO3 v13.4 as a target version. Existing user-defined extbase constraints are preserved. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 59708ac commit 9b2ce23

5 files changed

Lines changed: 37 additions & 29 deletions

File tree

Classes/Domain/Model/Extension.php

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,11 @@ public function setDependencies(array $dependencies): void
568568

569569
public function getDependencies(): array
570570
{
571-
return $this->dependencies;
571+
$dependencies = $this->dependencies;
572+
if (!array_key_exists('extbase', $dependencies)) {
573+
$dependencies['extbase'] = '13.4.0-13.4.99';
574+
}
575+
return $dependencies;
572576
}
573577

574578
public function setTargetVersion(float $targetVersion): void
@@ -660,6 +664,7 @@ public function getComposerInfo(): array
660664
'require' => [
661665
'php' => $versionConstraints['php'],
662666
'typo3/cms-core' => $versionConstraints['typo3/cms-core'],
667+
'typo3/cms-extbase' => $versionConstraints['typo3/cms-extbase'],
663668
],
664669
'require-dev' => [
665670
'typo3/testing-framework' => $versionConstraints['typo3/testing-framework'],
@@ -704,18 +709,11 @@ public function getComposerInfo(): array
704709

705710
private function getVersionConstraints(): array
706711
{
707-
$majorVersion = (int)$this->targetVersion;
708-
return match ($majorVersion) {
709-
12 => [
710-
'php' => '>=8.1',
711-
'typo3/cms-core' => '^12.4',
712-
'typo3/testing-framework' => '^8.0',
713-
],
714-
default => [
715-
'php' => '>=8.2',
716-
'typo3/cms-core' => '^13.4',
717-
'typo3/testing-framework' => '^9.0',
718-
],
719-
};
712+
return [
713+
'php' => '>=8.2',
714+
'typo3/cms-core' => '^13.4',
715+
'typo3/cms-extbase' => '^13.4',
716+
'typo3/testing-framework' => '^9.0',
717+
];
720718
}
721719
}

Tests/Fixtures/TestExtensions/eb_astrophotography/ext_emconf.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
'version' => '',
1111
'constraints' => [
1212
'depends' => [
13+
'extbase' => '13.4.0-13.4.99',
1314
],
1415
'conflicts' => [],
1516
'suggests' => [],

Tests/Fixtures/TestExtensions/test_extension/composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
"license": "GPL-2.0-or-later",
1212
"require": {
1313
"php": ">=8.2",
14-
"typo3/cms-core": "^13.4"
14+
"typo3/cms-core": "^13.4",
15+
"typo3/cms-extbase": "^13.4"
1516
},
1617
"require-dev": {
1718
"typo3/testing-framework": "^9.0"

Tests/Fixtures/TestExtensions/test_extension/ext_emconf.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
'constraints' => [
1212
'depends' => [
1313
'typo3' => '11.5.0-11.5.99',
14+
'extbase' => '13.4.0-13.4.99',
1415
],
1516
'conflicts' => [],
1617
'suggests' => [],

Tests/Unit/Domain/Model/ExtensionTest.php

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -79,33 +79,41 @@ public function generateSiteSetDefaultValueIsFalse(): void
7979
/**
8080
* @test
8181
*/
82-
public function getComposerInfoReturnsCorrectConstraintsForV12(): void
82+
public function getComposerInfoReturnsCorrectConstraintsForV13(): void
8383
{
8484
$this->extension->setExtensionKey('test_extension');
8585
$this->extension->setVendorName('TestVendor');
86-
$this->extension->setTargetVersion(12.4);
86+
$this->extension->setTargetVersion(13.4);
8787

8888
$composerInfo = $this->extension->getComposerInfo();
8989

90-
self::assertSame('>=8.1', $composerInfo['require']['php']);
91-
self::assertSame('^12.4', $composerInfo['require']['typo3/cms-core']);
92-
self::assertSame('^8.0', $composerInfo['require-dev']['typo3/testing-framework']);
90+
self::assertSame('>=8.2', $composerInfo['require']['php']);
91+
self::assertSame('^13.4', $composerInfo['require']['typo3/cms-core']);
92+
self::assertSame('^13.4', $composerInfo['require']['typo3/cms-extbase']);
93+
self::assertSame('^9.0', $composerInfo['require-dev']['typo3/testing-framework']);
9394
}
9495

9596
/**
9697
* @test
9798
*/
98-
public function getComposerInfoReturnsCorrectConstraintsForV13(): void
99+
public function getDependenciesAlwaysContainsExtbase(): void
99100
{
100-
$this->extension->setExtensionKey('test_extension');
101-
$this->extension->setVendorName('TestVendor');
102-
$this->extension->setTargetVersion(13.4);
101+
$dependencies = $this->extension->getDependencies();
103102

104-
$composerInfo = $this->extension->getComposerInfo();
103+
self::assertArrayHasKey('extbase', $dependencies);
104+
self::assertSame('13.4.0-13.4.99', $dependencies['extbase']);
105+
}
105106

106-
self::assertSame('>=8.2', $composerInfo['require']['php']);
107-
self::assertSame('^13.4', $composerInfo['require']['typo3/cms-core']);
108-
self::assertSame('^9.0', $composerInfo['require-dev']['typo3/testing-framework']);
107+
/**
108+
* @test
109+
*/
110+
public function getDependenciesDoesNotOverrideExistingExtbaseConstraint(): void
111+
{
112+
$this->extension->setDependencies(['extbase' => '12.0.0-12.4.99']);
113+
114+
$dependencies = $this->extension->getDependencies();
115+
116+
self::assertSame('12.0.0-12.4.99', $dependencies['extbase']);
109117
}
110118

111119
/**
@@ -129,7 +137,6 @@ public function getComposerInfoContainsPhpConstraint(): void
129137
{
130138
$this->extension->setExtensionKey('test_extension');
131139
$this->extension->setVendorName('TestVendor');
132-
$this->extension->setTargetVersion(12.4);
133140

134141
$composerInfo = $this->extension->getComposerInfo();
135142

0 commit comments

Comments
 (0)