Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

[BUGFIX] Ensure correct path calculation on system build #633

Open
wants to merge 1 commit into
base: 8
Choose a base branch
from

Conversation

sbuerk
Copy link
Collaborator

@sbuerk sbuerk commented Oct 15, 2024

TYPO3 core SystemEnvironmentBuilder has been implement
normal TYPO3 usages in mind respecting possible instance
setup scenarios, to build low level system environment
before taking configuration into account.

Path calculations are based on different indicators,
for example if TYPO3 is used in composer mode based
on the PHP define() TYPO3_COMPOSER_MODE set during
by the typo3/cms-composer-installers composer plugin
during composer install actions.

Per nature, PHP defines are immutable and cannot be
changed anymore during runtime.

As typo3/testing-framework is only installabe using
composer the TYPO3_COMPOSER_MODE define is always set
but is invalid for functional test instances build in
legacy mode and making invalid path calculations.
That was hidden quite some time now, and is related to
a chain of changes over a very long period of time and
finally popped up in early TYPO3 v13 development after
introducing the configurable backend url feature.

Functional tests building relative url for resources
or links could run into the issue not retrieving the
leading slash anymore due to path calculation errrors,
leading to follup issues in NormalizedParams create
method when using frontend requests.

Eventually more developers run into that issue, but
simply adjusted the test expectation instead analyzing
the root of the curse and thus not reported it, which
has been done recenently.

To fix this issue changes on two fronts have to be made,
in the TYPO3 core SystemEnvironmentBuilder [1] and
in the testing-framework implementation.

Note that only both changes together solves this issue,
as the testing-framework change alone would not be
executed due to using self for static method calls
in the TYPO3 implementation.

[1] https://review.typo3.org/c/Packages/TYPO3.CMS/+/86569

Resolves: #577
Releases: main, 8

TYPO3 core `SystemEnvironmentBuilder` has been implement
normal TYPO3 usages in mind respecting possible instance
setup scenarios, to build low level system environment
before taking configuration into account.

Path calculations are based on different indicators,
for example if TYPO3 is used in composer mode based
on the PHP define() TYPO3_COMPOSER_MODE set during
by the `typo3/cms-composer-installers` composer plugin
during `composer install` actions.

Per nature, PHP defines are immutable and cannot be
changed anymore during runtime.

As `typo3/testing-framework` is only installabe using
composer the TYPO3_COMPOSER_MODE define is always set
but is invalid for functional test instances build in
legacy mode and making invalid path calculations.
That was hidden quite some time now, and is related to
a chain of changes over a very long period of time and
finally popped up in early TYPO3 v13 development after
introducing the configurable backend url feature.

Functional tests building relative url for resources
or links could run into the issue not retrieving the
leading slash anymore due to path calculation errrors,
leading to follup issues in `NormalizedParams` create
method when using frontend requests.

Eventually more developers run into that issue, but
simply adjusted the test expectation instead analyzing
the root of the curse and thus not reported it, which
has been done recenently.

To fix this issue changes on two fronts have to be made,
in the TYPO3 core `SystemEnvironmentBuilder` [1] and
in the testing-framework implementation.

Note that only both changes together solves this issue,
as the testing-framework change alone would not be
executed due to using `self` for static method calls
in the TYPO3 implementation.

[1] https://review.typo3.org/c/Packages/TYPO3.CMS/+/86569

Resolves: #577
Releases: main, 8
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant