Skip to content

[FEATURE] TYPO3 v14 compatibility - #101

Open
SvenJuergens wants to merge 8 commits into
IchHabRecht:mainfrom
SvenJuergens:task/typo3-14-compatibility
Open

SvenJuergens wants to merge 8 commits into
IchHabRecht:mainfrom
SvenJuergens:task/typo3-14-compatibility

Conversation

@SvenJuergens

Copy link
Copy Markdown

Continues #98 by @georgringer (his commit is included with attribution, as suggested in his PR description) and completes the TYPO3 v14 support:

Production code

  • [TASK] Make it compatible with v14 #98: composer/ext_emconf constraints, StorageRepository usage in RemoteResourceCollection
  • FileRepository::deleteByIdentifier() still used the removed ResourceFactory::getFileObjectByStorageAndIdentifier() — replaced with StorageRepository/ResourceStorage::getFileByIdentifier() (available in v13 as well)
  • TCA: 'eval' => 'required' → 'required' => true (supported since v12) and the FlexForm ds registration is now version dependent — v14 expects the data structure directly as string, while v13 only supports the 'default' array key. This avoids the automatic TCA migration log entries on v14.

Tests

  • Allow PHPUnit 11/12 and typo3/testing-framework v9 in require-dev (composer picks the right combination per core/PHP version)
  • Doc-comment annotations (@test, @dataProvider) replaced with PHP attributes — removed in PHPUnit 12, supported since PHPUnit 10
  • AbstractFunctionalTestCase initializes the testing framework properties directly instead of overriding the TestCase constructor, which is final in PHPUnit 12
  • DeleteCommandTest resolves storages via StorageRepository

CI

  • Test matrix extended with ^14.3 / 14.3.x-dev

Note: this branch also contains the three commits from #100 — without them the functional tests cannot run reliably on GitHub runners (Wikimedia throttling). Once #100 is merged the diff of this PR shrinks accordingly.

Verified locally (unit + functional green on TYPO3 13.4.32 and 14.3.4) and on a fork with the same workflows: all matrix jobs green across TYPO3 ^13.4/^14.3 × PHP 8.2/8.3/8.4.

georgringer and others added 8 commits July 13, 2026 16:51
ResourceFactory::getFileObjectByStorageAndIdentifier() has been
removed in TYPO3 v14. Resolve the storage via StorageRepository
and use ResourceStorage::getFileByIdentifier() instead, which is
available in TYPO3 v13 as well.
* Allow phpunit 11/12 and typo3/testing-framework v9 in require-dev
* Replace doc-comment annotations (@test, @dataProvider) with PHP
  attributes, removed in PHPUnit 12 and supported since PHPUnit 10
* Initialize testing framework properties directly instead of
  overriding the TestCase constructor, which is final in PHPUnit 12
* Resolve storages via StorageRepository in DeleteCommandTest as
  ResourceFactory::getStorageObject() has been removed in TYPO3 v14
* Use 'required' => true instead of eval 'required', supported
  since TYPO3 v12
* Register the FlexForm data structure as plain string in TYPO3
  v14, keep the 'default' array key for v13 where the string
  syntax is not supported yet
* Raise ext_emconf constraint to cover all TYPO3 v14 releases
Add ^14.3 and 14.3.x-dev to the test matrix.
Wikimedia throttles requests with a generic User-Agent coming
from cloud IP ranges (robot policy, https://w.wiki/4wJS), which
made fileExistsWithDomainResource fail on GitHub Actions runners.
Wikimedia throttles requests from cloud IP ranges like GitHub
Actions runners (robot policy, https://w.wiki/4wJS). When the
domain resource is throttled, the placehold fallback serves the
file and the tx_filefill_identifier assertion fails. Skip the
test in this case instead of reporting a false negative.
Parallel CI jobs share the runner IP pool, so Wikimedia may start
throttling between the initial probe and the actual fetch. When
the domain resource did not serve the file, probe the remote again
and skip instead of failing. Use GET for the probe to mirror the
actual fetch request.
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
4.5% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants