- Feb 13, 2024
-
-
Stefan Bürk authored
A new PHPStan version has been releases, which is pulled in automatically in the composerInstallMax nightly test. The higher version allows to remove a ignore pattern from the baseline and a superfluous key unset is detected. This change raises the PHPStan version, removes the superfluous `unset()` and regenerates the baseline to remove the invalid ignore pattern. Used command(s): > Build/Scripts/runTests.sh -s composer \ -- require --dev "phpstan/phpstan":"^1.10.58" > Build/Scripts/runTests.sh \ -s phpstanGenerateBaseline Resolves: #103105 Releases: main, 13.0, 12.4 Change-Id: I689079eaac7f9461084e6a71ff08ef716cf551e4 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82933 Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Stefan Bürk <stefan@buerk.tech>
-
- Feb 06, 2024
-
-
Stefan Bürk authored
Doctrine DBAL 3.8.x comes with further deprecations, but also with the new `QueryBuilder::reset*()` methods as a mitigation for the deprecated generic QueryBuilder methods `resetQueryParams()` and `resetQueryParam()`. See [1] for release notes and [2] for changes from current minimum version towards 3.8.1. Raising the minimum version ensures that extension authors are able to create TYPO3 v12 and v13 compatible code. At least, they can rely on it with the TYPO3 release containing this change for non-Composer and Composer mode. Used command(s): > \ composer req --no-update --no-install \ -d typo3/sysext/redirects \ "doctrine/dbal":"^3.8.1" ; \ composer req --no-update --no-install \ -d typo3/sysext/core \ "doctrine/dbal":"^3.8.1" ; \ composer req --no-update --no-install \ -d typo3/sysext/install \ "doctrine/dbal":"^3.8.1" ; \ composer req -W \ "doctrine/dbal":"^3.8.1" [1] https://github.com/doctrine/dbal/releases/tag/3.8.1 [2] h...
-
- Feb 03, 2024
-
-
Stefan Bürk authored
TYPO3 uses a composer package [1] to import locales along with translations and a custom script has been added to create and update included translation files. This change updates the language files with the last updates and requires the package with the current highest version as minimum. Used command(s): > composer req --dev \ "sokil/php-isocodes-db-i18n":"^4.0.19" > php Build/Scripts/updateIsoDatabase.php [1] sokil/php-isocodes-db-i18n Resolves: #103027 Related: #100659 Releases: main, 12.4 Change-Id: I2839113ed3894cec58b41c85abd59039cab00725 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82774 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Stefan Bürk <stefan@buerk.tech>
-
- Feb 01, 2024
-
-
Stefan Bürk authored
Used command(s): > composer req --dev \ "typo3/testing-framework":"^8.0.9" [1] https://github.com/TYPO3/testing-framework/releases/tag/8.0.9 Resolves: #103010 Releases: 12.4 Change-Id: Ic0b592ba160c958833a75b17481141a65bf566b6 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82756 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de>
-
- Jan 25, 2024
-
-
Stefan Bürk authored
This change updates phpstan and related libraries to available maximum versions. The new version finds one `array_filter` usages with wrong typeing, which is fixed along the way. Used command(s): > composer require --dev \ "phpstan/phpstan":"^1.10.57" \ "phpstan/phpdoc-parser":"^1.25.0" \ "phpstan/phpstan-phpunit":"^1.3.15" > Build/Scripts/runTests.sh -s phpstan Resolves: #102920 Releases: main, 12.4 Change-Id: Iab6a0a079ff745b5bdbedf9b15a3bf9c7f83c171 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82641 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de>
-
- Jan 12, 2024
-
-
Stefan Bürk authored
Doctrine DBAL 3.7.0 introduced a performance issue [1] which has been already fixed by the Doctrine Team [2]. This change updates the `doctrine/dbal` composer constraint to ensure that this performance issue is gone. Note: The monorepo composer.lock already containted the 3.7.2 bugfis release, therefore this has not been detected in casual core development. This update is to mitigate the performance issue at all costs for TYPO3 users. As a sideeffect, this should put `composerInstallMin` nightly function tests on speed again. Used command(s): > composer require --no-update --no-install \ -d typo3/sysext/redirects \ "doctrine/dbal":"^3.7.2" ; \ composer require --no-update --no-install \ -d typo3/sysext/core \ "doctrine/dbal":"^3.7.2" ; \ composer require --no-update --no-install \ -d typo3/sysext/install \ "doctrine/dbal":"^3.7.2" ; \ composer require --no-update \ "doctrine/...
-
- Jan 06, 2024
-
-
Stefan Bürk authored
This change upgrades the `typo3/cms-styleguide` version to pull in required changes for `symfony 7 compat`. The culprit was a missing method return type for the funny `kauderwelsch` command execute method. [1] Used command(s): > composer require --dev "typo3/cms-styleguide":"^12.0.3" Note: `ext:styleguide` has been integrated into the core monorepo starting with v13, but older core version still uses the dedicated package and needs to be updated manually. [1] https://github.com/TYPO3-CMS/styleguide/commit/5d2515e051af91a9a2fc Resolves: #102767 Releated: #102746 Releases: 12.4 Change-Id: Ib903f3927e5591e396966466dadb5bef45f5a604 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82359 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de>
-
Anja Leichsenring authored
New phpstan find some questionable null fallback occurences, that are not obvious. Add a baseline for now. > composer req --dev phpstan/phpstan:^1.10.51 > ./Build/Scripts/runTests.sh -s phpstanGenerateBaseline Resolves: #102756 Releases: main, 12.4 Change-Id: I3eef057d4fd04fe92f813bad7e1873718f6da765 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82357 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
Stefan Bürk <stefan@buerk.tech>
-
- Jan 04, 2024
-
-
Benni Mack authored
This change enables Symfony 7 in addition to symfony 6 in TYPO3. Symfony7 requires PHP 8.2, thus is not installed by default for the time being, as this change is also allowed for TYPO3 v12 support when running with PHP 8.2 and composer. Used commands: composer req -W \ "symfony/config:^6.4 || ^7.0" \ "symfony/console:^6.4 || ^7.0" \ "symfony/dependency-injection:^6.4 || ^7.0" \ "symfony/doctrine-messenger:^6.4 || ^7.0" \ "symfony/expression-language:^6.4 || ^7.0" \ "symfony/filesystem:^6.4 || ^7.0" \ "symfony/finder:^6.4 || ^7.0" \ "symfony/http-foundation:^6.4 || ^7.0" \ "symfony/mailer:^6.4 || ^7.0" \ "symfony/messenger:^6.4 || ^7.0" \ "symfony/mime:^6.4 || ^7.0" \ "symfony/options-resolver:^6.4 || ^7.0" \ "symfony/property-access:^6.4 || ^7.0" \ "symfony/property-info:^6.4 || ^7.0" \ "symfony/rate-limiter:^6.4 || ^7.0" \ "symfony/routing:^6.4 || ^7.0" \ "symfony/uid:^6.4 || ^7.0" \ "symfony/var-dumper:^6.4 || ^7.0" \ "symfony/yaml:^6.4 || ^7.0" composer req --dev -W \ "codeception/codeception:^5.0.13" \ "codeception/module-filesystem:^3.0.1" \ "friendsofphp/php-cs-fixer:^3.46" \ "symfony/translation:^6.4 || ^7.0" Resolves: #102746 Releases: main, 12.4 Change-Id: I6bbbfb0bc6e26c00fba0010234b5c8b698cf0a81 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82314 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Benni Mack <benni@typo3.org>
-
Anja Leichsenring authored
TYPO3 uses a composer package [1] to import locales along with translations and a custom script has been added to create and update included translation files. This change updates the language files with the last updates and requires the package with the current highest version as minimum. Used command(s): > composer req --dev \ "sokil/php-isocodes-db-i18n":"^4.0.18" > Build/Scripts/runTests.sh \ -s checkIsoDatabase \ -p 8.1 [1] sokil/php-isocodes-db-i18n Resolves: #102747 Releases: main, 12.4 Change-Id: I4d6603484c4fca213c66f0df0feff13bc1011b29 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82307 Tested-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Stefan Bürk <stefan@buerk.tech>
-
- Dec 28, 2023
-
-
Stefan Bürk authored
PHPUnit has changed the behavior of the error handler in several ways, for example introducing a PHP attribute to disable the PHPUnit error handler for tests dealing with `error_get_last()` [1], throwing an exception and stopping the script execution on `E_*_ERROR` or clearing the error result [2] - which breaks the ability to use the native `error_get_last()` method to test custom error handler implementation. Something which TYPO3 needs to do for the provided custom error handler. An additional change [3] to check and restore error handlers with levels has been reverted due to issues in the Laravel world. This change modifies the related test to use the introduced PHP attribute `#[WithoutErrorHandler]` and raises PHPUnit. Note: PHPUnit does not recognize the `@test` doc-block annotation if the `#[WithoutErrorHandler]` attribute is used. Therefore, the attribute counterparts for `@test` and `@dataProvider` has been added on top and not exclusively for now, albeit looking weird and fishy. This needs to be addressed in a more generic way in a dedicated change. Used command(s): > composer require --dev \ "phpunit/phpunit":"^10.5.5" \ "typo3/testing-framework":"^8.0.8" [1] https://github.com/sebastianbergmann/phpunit/pull/5430 [2] https://github.com/sebastianbergmann/phpunit/pull/5592 [3] https://github.com/sebastianbergmann/phpunit/pull/5619 Resolves: #102724 Releases: main, 12.4 Change-Id: I77f750ef2eba53b5f8caa51651f36321ae5d1224 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82283 Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Simon Schaufelberger <simonschaufi+typo3@gmail.com> Tested-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Simon Schaufelberger <simonschaufi+typo3@gmail.com>
-
- Dec 09, 2023
-
-
Christian Kuhn authored
> composer req --dev phpstan/phpstan:^1.10.48 > ./Build/Scripts/runTests.sh -s phpstanGenerateBaseline Resolves: #102637 Releases: main, 12.4 Change-Id: I2bbb5211c4a2622ab717a3c4dd0f68d18d2e17d8 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82157 Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
core-ci <typo3@b13.com>
-
- Dec 05, 2023
-
-
Christian Kuhn authored
This bugfix enables the possibility to access _LOCAL_LANG values from TypoScript properly again via Extbase's LocalizationUtility, and thus for <f:translate> ViewHelpers as well again. This is what has changed under-the-hood: The TranslateViewHelper is now only a thin layer to Extbase's LocalizationUtility (as before), and only checks if a current request or Locale/languageKey is given, if a locale can be resolved. Everything else is then dispatched to the LocalizationUtility. <f:translate> is very clean now and has almost no further responsibility than to call LocalizationUtility::translate Instead of adding further LocalizationUtility magic, overriding of TypoScript is now enabled for any kind of plugin which hands in $extensionName. This is achieved by building proper Locale objects from the request which are then used to build the respective LanguageService. As it turned out after the 12.4.0 release, the "Locales" class is indeed the factory for creating a Locale, which is decoupled from the actual LanguageService (= label magic), the Locales factory receives a few create methods to make life easier for usage, which both f:translate AND LocalizationUtility receive, making their parts much smaller. Further work will dissolve the usage of the Configuration Manager of Extbase, but this won't happen in v12 anymore. Resolves: #100759 Releases: main, 12.4 Change-Id: Ifcad2ec590746e96066a96f314500bd50e9b4695 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82023 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Benni Mack <benni@typo3.org> Tested-by:
Benni Mack <benni@typo3.org>
-
- Dec 04, 2023
-
-
Stefan Bürk authored
TYPO3 uses a composer package [1] to import locales along with translations and a custom script has been added to create and update included translation files. This change updates the language files with the last updates and requires the package with the current highest version as minimum. Used command(s): > composer req --dev \ "sokil/php-isocodes-db-i18n":"^4.0.17" > Build/Scripts/runTests.sh \ -s checkIsoDatabase \ -p 8.1 [1] sokil/php-isocodes-db-i18n Resolves: #102596 Releases: main, 12.4 Change-Id: I21a9e5d5215e0146d3f87aeee3b833979ba05f07 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82080 Reviewed-by:
Benni Mack <benni@typo3.org> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Benni Mack <benni@typo3.org>
-
- Dec 02, 2023
-
-
Christian Kuhn authored
Also fix one unneeded null coalescing operator usage, which was discovered with this release. > composer require --dev phpstan/phpstan:^1.10.47 Resolves: #102584 Releases: main, 12.4 Change-Id: I19876bfe33fcf05166df7e0d92696c2368b29490 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82068 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
- Nov 29, 2023
-
-
Benni Mack authored
This commit updates all Symfony components to version 6.4, as 6.3 ran out of support. Symfony 6.4 also marks an LTS release. Please see the upgrade document at [1]. Executed command: composer require \ symfony/config:^6.4 \ symfony/console:^6.4 \ symfony/dependency-injection:^6.4 \ symfony/doctrine-messenger:^6.4 \ symfony/expression-language:^6.4 \ symfony/filesystem:^6.4 \ symfony/finder:^6.4 \ symfony/http-foundation:^6.4 \ symfony/mailer:^6.4 \ symfony/messenger:^6.4 \ symfony/mime:^6.4 \ symfony/options-resolver:^6.4 \ symfony/property-access:^6.4 \ symfony/property-info:^6.4 \ symfony/rate-limiter:^6.4 \ symfony/routing:^6.4 \ symfony/uid:^6.4 \ symfony/var-dumper:^6.4 \ symfony/yaml:^6.4 \ -W composer require --dev \ symfony/translation:^6.4 \ -W [1]: https://github.com/symfony/symfony/blob/6.4/UPGRADE-6.4.md Resolves: #102552 Releases: main, 12.4 Change-Id: I01f8fcedff74eac49a6901651b36584272f93b82 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82036 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Andreas Kienast <a.fernandez@scripting-base.de> Reviewed-by:
Andreas Kienast <a.fernandez@scripting-base.de>
-
Christian Kuhn authored
The new version fixes a false positive, adds a second warning for a problem that already is logged in the baseline, and sadly introduces one new false positive. > composer req --dev phpstan/phpstan:^1.10.46 > composer req --dev phpstan/phpstan-phpunit:^1.3.15 > ./Build/Scripts/runTests.sh -s phpstanGenerateBaseline Resolves: #102544 Releases: main, 12.4 Change-Id: I79e3854458f1061b4943d0b3fab78b1a7502b13f Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82001 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
- Nov 27, 2023
-
-
Christian Kuhn authored
> composer require --dev phpstan/phpstan:^1.10.45 > Build/Scripts/runTests.sh -s phpstanGenerateBaseline Resolves: #102536 Releases: main, 12.4 Change-Id: Ie529eba3c951d20bf4d0b6f2b838d329ac771805 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81982 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
- Nov 24, 2023
-
-
Stefan Bürk authored
Used command(s): > composer req --dev \ "typo3/testing-framework":"^8.0.7" Resolves: #102506 Releases: main Change-Id: Ib0ca2770420cdcb7ff4464a785f44e01bf02e192 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81914 Reviewed-by:
Andreas Kienast <a.fernandez@scripting-base.de> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Andreas Kienast <a.fernandez@scripting-base.de>
-
- Nov 14, 2023
-
-
Benjamin Franzke authored
See https://github.com/TYPO3/html-sanitizer/releases/tag/v2.1.4 composer req typo3/html-sanitizer:^2.1.4 composer req typo3/html-sanitizer:^2.1.4 \ -d typo3/sysext/core --no-update Resolves: #102169 Releases: main, 12.4, 11.5 Change-Id: I76edb7ff0dc66d3308d5c0875c2db56ca02addd7 Security-Bulletin: TYPO3-CORE-SA-2023-007 Security-References: CVE-2023-47125 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81735 Tested-by:
Oliver Hader <oliver.hader@typo3.org> Reviewed-by:
Oliver Hader <oliver.hader@typo3.org>
-
- Nov 07, 2023
-
-
Benjamin Franzke authored
Symfony's AsCommand attribute encodes `hidden = true` into a trailing `|` for the name attribute. Drop that for our command list and mark the command as hidden in the command registry. Resolves: #102292 Related: #101567 Releases: main, 12.4 Change-Id: I6415e3f5525764aab336bab20432c032e0665632 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81660 Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Benjamin Franzke <ben@bnf.dev>
-
- Nov 06, 2023
-
-
Andreas Kienast authored
This commit updates `phpstan/phpstan` to the latest version and fixes one issue within `RedisSessionBackend` where the Redis API claims to return a `\Redis` object when calling `->del()`. This indicates a usage of multi mode, where the delete state cannot get determined. Also, multi mode is not supported by our session backend, therefore we handle this case as "not successful" now. Executed command: composer require --dev phpstan/phpstan:^1.10.41 -W Resolves: #102320 Releases: main, 12.4 Change-Id: I6f4edb746c6e23d92d5147cc7c711d8da0309f0f Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81691 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Andreas Kienast <a.fernandez@scripting-base.de> Tested-by:
Andreas Kienast <a.fernandez@scripting-base.de>
-
- Oct 31, 2023
-
-
Andreas Kienast authored
This commit updates `phpstan/phpstan` to the latest version and fixes one quirk in our code in order to make our nightly test runs happy again. Executed command: composer require --dev phpstan/phpstan:^1.10.40 -W Resolves: #102294 Releases: main, 12.4 Change-Id: I22b691fbdab5a17cf1328b7613d9c97a98eae861 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81633 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Andreas Kienast <a.fernandez@scripting-base.de> Reviewed-by:
Andreas Kienast <a.fernandez@scripting-base.de>
-
- Oct 30, 2023
-
-
Christian Kuhn authored
Minor CGL streamlinings from latest php-cs-fixer. > composer req --dev friendsofphp/php-cs-fixer:^3.37.1 > Build/Scripts/runTests.sh -s cgl Resolves: #102285 Releases: main, 12.4, 11.5 Change-Id: I0cc1fe3c0f81f62a49df00d62d57ef3c593c57df Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81610 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
- Oct 24, 2023
-
-
Christian Kuhn authored
It's time to update to latest changes of php-cs-fixer to align with current community rules. This brings a rather huge series of changes, main changes due to single_line_empty_body rule which now formats empty class and method body curly braces into a single line, plus changes from function_declaration rule which tends to avoid more whitespaces. The change has a slight impact on phpstan, we regenerate baseline. To reduce backport headaches, this change is backported to v12 and v11. > composer req --dev friendsofphp/php-cs-fixer:^3.35.1 > Build/Scripts/runTests.sh -s cgl > Build/Scripts/runTests.sh -s phpstanGenerateBaseline Resolves: #102236 Releases: main, 12.4, 11.5 Change-Id: Iea45b10667951672b2194033216c49f580799f55 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81513 Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com> Reviewed-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
core-ci <typo3@b13.com>
-
- Oct 18, 2023
-
-
Benjamin Franzke authored
An `instanceof Type` on `Type|null` is unneeded and is to be replaced by a null-check (or modern alternatives like optional chaning or the null coalescing operator) in order to avoid narrowing code branches unnecessarily. We call them "pseudo" uncertain checks there is no need to express uncertainty regarding the type in a condition where native type declarations define a specific type *or* null: It is `null` or `!null`. Definition of a pseudo uncertain instanceof check: `$foo instanceof Bar` is fully equivalent to `$foo !== null`, when `$foo` is defined (via native PHP types) to be `Bar|null`. ⇒ `instanceof` expresses pseudo uncertainty regarding the type. From what we have seen in previous gerrit discussions, there were two reasons why instanceof was preferred over null checks although being unneeded: 1) Cognitive load for an instanceof check is perceived to be lower in contrast to negated null (not null) conditions 2) Preparatory safe-guard against type of $foo being changed at sometime later 1) Cognitive load is a subjective term and the opinions actually differ a lot. Some developers prefer narrowing instanceof conditions because they claim the desired type for a certain code branch. Some others say that's a clear signal for code that needs refactoring and perceive a high cognitive load because they do not understand why the type is unnecessarily checked if it can only be null or not null. Lets call that: "reverse cognitive load". That means, this argument basically boils down to "congitive load" (for the good "then" case: inner code block) vs "reverse cognitive load" (for the bad "else" case: outer code block) ⇒ Due to being subjective "cognitive load" is not a good argument to base a decision upon. 2) The second argument is that an instanceof ensures a method that is to be called actually exists and doesn't lead to an error – that is a "preparatory safe-guard". This is true and works, but doesn't "answer" the question, what happens if the object is not an instance of the desired type (but not null). While preparatory safe-guards against the type of variable being changed sometime later was probably a pretty good idea for code that is not statically analyzed and had no native type declarations, but such checks effectively preclude that the type must/should never change (which might not be true!) and has no chance of actually detecting when that case (type change/extension) ever happens. All advantages offered by pseudo uncertain instanceof checks are accomplished with static code analysis as well, but with the added downside that an `instanceof` hardcodes our human static code analysis result, instead of letting the static analyzer do the job. To explain that: If the type of the variable under test is actually widened (like a union type, or change to a base class), it will never be automatically detected that there is an instanceof condition that restricts the type too narrowly. It will always be valid code from static code analysis perspective. In comparison to that, static analysis on null-checked variables will report invalid method calls or assignments not allowed by the (natively defined) types and will notify in case a type change requires the code to be adapted. We gain the advantage that the code will not be forgotten to be updated to a new type. That means !== null combined with static code analysis has the same level of being a safeguard against the bad cases, while instanceof silently transforms new "good"-cases into bugs, where !== null is a transparent and secure passthrough. Actually to make an uncertain instanceof robust, an elseif branch would be needed to be somehow notified about new good-cases without silently ignoring them: if ($foo instanceof Foo) { … } elseif ($foo !== null) { throw new MustNeverHappenException(…); } In other words an unneeded pseudo uncertain instanceof check is basically like a switch construct without a default case. Just to be explicit: Of course, instanceof is fine to be used when multiples types are to be expected and handled in different code branches. That means pseudo uncertain instanceof usage instead of null-checks is an antipattern for the following reasons: * It narrow code branches for the sake of less cognitive load * The cognitive load appears to be lower, but actually future-bad cases are overseen and are never auto-detectable in future – while null-checks will resolve to static analysis errors in case the input type is *ever* widened (which uncertain `instanceof` checks try to prepare for, but actually introduce future-bugs because of missing `else` cases) * It embraces deep nesting instead of early returns via null-checks * It embraces conditions over newer and more elegant PHP techniques like optional chaing * Tries to "help" the developer by explicitly anotating the current type of the variable under test ⇒ This is a clear sign of code smell, that needs to refactored into smaller chunks and methods and type autocompletion/information can be provided by IDEs when using proper types (which this change is about) anyway * Has zero advantages over static code analysis Resolves: #102140 Releases: main, 12.4 Change-Id: I10de41e9744a814c9e24255573b5a5eaf6fb8b0f Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81445 Tested-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
core-ci <typo3@b13.com>
-
- Oct 10, 2023
-
-
Stefan Bürk authored
Recent release for doctrine/dbal containes a php docblock change which helps phpstan to proper determine types. This change upgrades the doctrine/dbal package and removes a now superflous entry from the phpstan baseline. Used command(s): > composer req --no-update \ -d typo3/sysext/core \ "doctrine/dbal":"^3.7.1" \ && composer req --no-update \ -d typo3/sysext/redirects \ "doctrine/dbal":"^3.7.1" \ && composer req --no-update \ -d typo3/sysext/install \ "doctrine/dbal":"^3.7.1" \ && composer req \ "doctrine/dbal":"^3.7.1" > Build/Scripts/runTests.sh -s phpstanGenerateBaseline Resolves: #102133 Releases: main, 12.4 Change-Id: Iaeba882e0584442c6caac71d3dd1e33ac0a56ef1 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81395 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Stefan Bürk <stefan@buerk.tech>
-
- Oct 09, 2023
-
-
Oliver Hader authored
> composer req --dev composer/composer ^2.6.5 Raised development dependencies, since v2.6.4 fixes CVE-2023-43655 which concerns "web-accessible server where the composer.phar can be executed as a php file" (which is not a security issue for TYPO3 in this case). Resolves: #102128 Releases: main, 12.4, 11.5 Change-Id: I3fd478fa7cee2c875b560f79cab94cb889d2b73a Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81386 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Oliver Hader <oliver.hader@typo3.org> Tested-by:
Oliver Hader <oliver.hader@typo3.org>
-
- Oct 07, 2023
-
-
Christian Kuhn authored
phpunit 10.4.0 brings minor changed type annotations which phpstan isn't happy with. We bump both deps now. > composer req --dev phpstan/phpstan:^1.10.38 > composer req --dev phpunit/phpunit:^10.4.0 -w > Build/Scripts/runTests.sh -s phpstanGenerateBaseline Resolves: #102110 Releases: main, 12.4 Change-Id: I86f6f47162d8e65bb6bf801c037a4e06e35288d9 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81371 Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
- Sep 27, 2023
-
-
Andreas Fernandez authored
This commit updates all Symfony components to version 6.3, as 6.2 ran out of support. Please see the upgrade document at [1]. Executed command: composer require \ symfony/config:^6.3 \ symfony/console:^6.3 \ symfony/dependency-injection:^6.3 \ symfony/doctrine-messenger:^6.3 \ symfony/expression-language:^6.3 \ symfony/filesystem:^6.3 \ symfony/finder:^6.3 \ symfony/http-foundation:^6.3 \ symfony/mailer:^6.3 \ symfony/messenger:^6.3 \ symfony/mime:^6.3 \ symfony/options-resolver:^6.3 \ symfony/property-access:^6.3 \ symfony/property-info:^6.3 \ symfony/rate-limiter:^6.3 \ symfony/routing:^6.3 \ symfony/uid:^6.3 \ symfony/yaml:^6.3 \ -W [1]: https://github.com/symfony/symfony/blob/6.3/UPGRADE-6.3.md Resolves: #102043 Releases: main, 12.4 Change-Id: Ia306d0ad34cc3fdb72a51259464491dc64fbdbc3 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81260 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Andreas Fernandez <a.fernandez@scripting-base.de> Tested-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
Andreas Fernandez <a.fernandez@scripting-base.de>
-
Stefan Bürk authored
The doctrine team realeased `doctrine/dbal 3.7.0` recently and this change raises the dependency to that version. Extension authors activating `doctrine/dbal` deprecation will then get the newest `doctrine/dbal` deprecations included in that release. That helps in preparation for planned `doctrine/dbal 4.x` upgrade with TYPO3 v13 to avoid stumpling into breaking changes. Used command(s): > composer require --no-update \ -d typo3/sysext/core \ "doctrine/dbal":"^3.7.0" ; \ composer require --no-update \ -d typo3/sysext/install \ "doctrine/dbal":"^3.7.0" ; \ composer require --no-update \ -d typo3/sysext/redirects \ "doctrine/dbal":"^3.7.0" ; \ composer require \ "doctrine/dbal":"^3.7.0" Resolves: #102042 Releases: main, 12.4 Change-Id: I34ee939fc94078df2006ad338d1e7ff1cac14a5f Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81259 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
Stefan Bürk <stefan@buerk.tech>
-
- Sep 20, 2023
-
-
Oliver Hader authored
This change uses the dependency ordering service in the method `\TYPO3\TestingFramework\Core\Testbase::setUpPackageStates` for test scenarios in functional and acceptance tests. Besides that the following changes were applied: * remove invalid dependency in fixture ext:test_configoverride_second * add `PackageStatesTest` to keep track of extension dependencies * add dependency to ext:frontend in ext:form, since it overrides TCA for the tables tt_content and sys_template (which would result in different ext:impexp results due to table field orderings) * recreate IRRE related XML fixtures for ext:impexp since fixture extensions are now ordered alphabetically (and due to #100734) Resolves: #101809 Releases: main, 12.4 Change-Id: I1f91a75ac8aec9db0291b0f5c8bcf7162d5b0082 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81093 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
Stefan Bürk <stefan@buerk.tech>
-
- Sep 10, 2023
-
-
Oliver Wand authored
When performing `Build/Scripts/runTests.sh -s cglGit` with latest cs fixer version a rule dependency error is thrown. This patch exchanges the deprecation with the current recommended rule. Used command(s): > composer require --dev \ "friendsofphp/php-cs-fixer":"^3.26.1" > Build/Scripts/runTests.sh -s cgl Resolves: #101888 Releases: main, 11.5, 12.4 Change-Id: Ie139ef841c92461e116732923991c6474e888a5e Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/80936 Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de>
-
- Sep 08, 2023
-
-
André Buchmann authored
When the parent record has been set to sys_language_uid=-1, but the child record has translations, it should be displayed in the correct language. Setting the languageUid for the querySettings to -1 results in display of the default language record of the child. Resolves: #92768 Releases: main, 12.4, 11.5 Change-Id: I25bcdbb182c1b35cbc08e5f91339453b0986cdcc Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/80907 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Stefan Bürk <stefan@buerk.tech>
-
- Sep 07, 2023
-
-
Stefan Bürk authored
This change raises the minimum version constraint for the `typo3/testing-framework` to ensure that required changes are available as preparation to backport the `apache2+php-fpm` based acceptance test execution. Used command(s): > composer require --dev typo3/testing-framework:^8.0.5 Resolves: #101863 Releases: 12.4 Change-Id: Ice125ef8fa93e84a01b3ad29ede6d6b0973f3e3c Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/80887 Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de>
-
- Aug 28, 2023
-
-
Christian Kuhn authored
The extbase ConfigurationManager is (unfortunately) a stateful singleton that we can not get rid of without a bigger rewrite. While stateful singletons are bad enough, the extbase LocalizationUtility makes this worse by parking an instance of ConfigurationManager in a static property, re-using it as a "cached" singleton. LocalizationUtility does this since it in itself is static, which makes this service just so convenient to use. When it comes to sub requests and similar, static state is doomed and we need to get rid of it, we've had a couple of patches in v12 dealing with similar things. Mid-term, extbase LocalizationUtility needs to vanish anyways, but in the meantime, we have to get rid of static state that kills sub request scope. The patch removes the static $configurationManager property and adapts functional tests that already showed the current solution was a hack. There are various upper and lower cache layers that ensure removing this "cache layer" won't make things more expensive in practice, which allows us to remove this static state without further fallback. In main, this needs a TF update: > composer u typo3/testing-framework In 12.4, this need a TF raise: > composer req --dev typo3/testing-framework:^8.0.3 Resolves: #101779 Releases: main, 12.4 Change-Id: Ie5db07b0475f612a996d369ab3417672b33fbb2d Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/80737 Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
Oliver Klee authored
The new versions find some more possible problems, and also improve performance. > composer req --dev phpstan/phpstan:^1.10.32 > composer req --dev phpstan/phpstan-phpunit:^1.3.14 > ./Build/Scripts/runTests.sh -s phpstanGenerateBaseline Resolves: #101756 Releases: main, 12.4, 11.5 Change-Id: I23429a98b25ce340405b8b9dc384869526c6f920 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/80707 Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
- Aug 18, 2023
-
-
Simon Gilli authored
see https://github.com/TYPO3/html-sanitizer/releases/tag/v2.1.3 composer req typo3/html-sanitizer:^2.1.3 composer req typo3/html-sanitizer:^2.1.3 \ -d typo3/sysext/core --no-update Resolves: #101705 Releases: main, 12.4, 11.5 Change-Id: I3e3152663b7b7804b01c8cd9b28393132efab628 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/80571 Tested-by:
Oliver Hader <oliver.hader@typo3.org> Reviewed-by:
Oliver Hader <oliver.hader@typo3.org> Tested-by:
core-ci <typo3@b13.com>
-
- Aug 03, 2023
-
-
Stefan Bürk authored
Update the typo3/testing-framework to pull in a needed correction as preparation for functional tests with PHP 8.3. Used command(s): > composer require --dev \ typo3/testing-framework:^8.0.2 Resolves: #101538 Releases: main, 12.4, 11.5 Change-Id: Id26531be8c49a9b1ee9624c178342659b28d3eab Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/80301 Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Oliver Klee <typo3-coding@oliverklee.de>
-
- Jul 31, 2023
-
-
Christian Kuhn authored
> composer req --dev typo3/cms-styleguide:^12.0.2 Resolves: #101508 Releases: main, 12.4 Change-Id: I824b05025c32eb72d10d908b9e61d6da6a7ca91a Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/80275 Tested-by:
Stefan B�rk <stefan@buerk.tech> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Stefan B�rk <stefan@buerk.tech>
-