From 3c5c35093754f084f648b9a75a85ca7b6725eaae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Sep 2024 08:30:37 +0000 Subject: [PATCH 01/19] [TASK] Update phpstan/phpstan requirement from ^1.12.3 to ^1.12.4 (#1466) Updates the requirements on [phpstan/phpstan](https://github.com/phpstan/phpstan) to permit the latest version. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/2.0.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.12.3...1.12.4) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 4502904..32d62e9 100644 --- a/composer.json +++ b/composer.json @@ -54,7 +54,7 @@ "php-parallel-lint/php-parallel-lint": "^1.4", "phpmd/phpmd": "^2.15.0", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^1.12.3", + "phpstan/phpstan": "^1.12.4", "phpstan/phpstan-phpunit": "^1.4.0", "phpstan/phpstan-strict-rules": "^1.6.0", "phpunit/phpunit": "^9.6.20", From 8cbf6abd27dd4f9f5aee839a5fdcb29c60f13413 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 Sep 2024 14:18:02 +0000 Subject: [PATCH 02/19] [TASK] Update phpstan/phpstan-strict-rules requirement (#1467) Updates the requirements on [phpstan/phpstan-strict-rules](https://github.com/phpstan/phpstan-strict-rules) to permit the latest version. - [Release notes](https://github.com/phpstan/phpstan-strict-rules/releases) - [Commits](https://github.com/phpstan/phpstan-strict-rules/compare/1.6.0...1.6.1) --- updated-dependencies: - dependency-name: phpstan/phpstan-strict-rules dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 32d62e9..50dc306 100644 --- a/composer.json +++ b/composer.json @@ -56,7 +56,7 @@ "phpstan/extension-installer": "^1.4.3", "phpstan/phpstan": "^1.12.4", "phpstan/phpstan-phpunit": "^1.4.0", - "phpstan/phpstan-strict-rules": "^1.6.0", + "phpstan/phpstan-strict-rules": "^1.6.1", "phpunit/phpunit": "^9.6.20", "saschaegerer/phpstan-typo3": "^1.10.2", "seld/jsonlint": "^1.11.0", From 6e987aca7bae43ceada62f220332257e6b417b26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 13:09:39 +0000 Subject: [PATCH 03/19] [TASK] Update phpstan/phpstan requirement from ^1.12.4 to ^1.12.5 (#1473) Updates the requirements on [phpstan/phpstan](https://github.com/phpstan/phpstan) to permit the latest version. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/2.0.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.12.4...1.12.5) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 50dc306..78e5270 100644 --- a/composer.json +++ b/composer.json @@ -54,7 +54,7 @@ "php-parallel-lint/php-parallel-lint": "^1.4", "phpmd/phpmd": "^2.15.0", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^1.12.4", + "phpstan/phpstan": "^1.12.5", "phpstan/phpstan-phpunit": "^1.4.0", "phpstan/phpstan-strict-rules": "^1.6.1", "phpunit/phpunit": "^9.6.20", From adb2b6693e593a6e447dc87636a911ce45a251f6 Mon Sep 17 00:00:00 2001 From: Oliver Klee Date: Fri, 27 Sep 2024 09:12:36 +0200 Subject: [PATCH 04/19] [TASK] Add a time limit to the documentation check on CI (#1472) This will avoid that a hung job will consume up to 30 minutes of CPU time. --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4234a93..e296a7c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -326,6 +326,7 @@ jobs: documentation: name: Documentation runs-on: ubuntu-24.04 + timeout-minutes: 2 steps: - name: Checkout uses: actions/checkout@v4 From 76eb2b22d59d1a268ce9b791ed20b49bb86b9f45 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Sep 2024 10:46:23 +0000 Subject: [PATCH 05/19] [TASK] Update ssch/typo3-rector requirement from ^2.6.5 to ^2.7.0 (#1474) Updates the requirements on [ssch/typo3-rector](https://github.com/sabbelasichon/typo3-rector) to permit the latest version. - [Release notes](https://github.com/sabbelasichon/typo3-rector/releases) - [Commits](https://github.com/sabbelasichon/typo3-rector/compare/v2.6.5...v2.7.0) --- updated-dependencies: - dependency-name: ssch/typo3-rector dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 78e5270..64d1665 100644 --- a/composer.json +++ b/composer.json @@ -62,7 +62,7 @@ "seld/jsonlint": "^1.11.0", "spaze/phpstan-disallowed-calls": "^3.4", "squizlabs/php_codesniffer": "^3.10.3", - "ssch/typo3-rector": "^2.6.5", + "ssch/typo3-rector": "^2.7.0", "ssch/typo3-rector-testing-framework": "^2.0.1", "symfony/console": "^5.4 || ^6.4 || ^7.0", "symfony/translation": "^5.4 || ^6.4 || ^7.0", From b0a4a7c611bc9998fd48b99fcbdbeb134f4d8ff5 Mon Sep 17 00:00:00 2001 From: Oliver Klee Date: Fri, 27 Sep 2024 13:02:29 +0200 Subject: [PATCH 06/19] [TASK] Sort the includes for GitLab CI (#1464) This will make maintenance of this file a bit easier. --- .gitlab/pipeline/.gitlab-ci.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.gitlab/pipeline/.gitlab-ci.yml b/.gitlab/pipeline/.gitlab-ci.yml index 711eebe..0523d6a 100644 --- a/.gitlab/pipeline/.gitlab-ci.yml +++ b/.gitlab/pipeline/.gitlab-ci.yml @@ -8,8 +8,8 @@ stages: include: - '/.gitlab/pipeline/jobs/.composer-update.yml' - - '/.gitlab/pipeline/jobs/.default.yml' - '/.gitlab/pipeline/jobs/.default-frontend.yml' + - '/.gitlab/pipeline/jobs/.default.yml' - '/.gitlab/pipeline/jobs/.variables.yml' - '/.gitlab/pipeline/jobs/build-composer-dependencies.yml' - '/.gitlab/pipeline/jobs/composer-normalize.yml' @@ -20,21 +20,21 @@ include: - '/.gitlab/pipeline/jobs/func-php8.0-v11-lowest.yml' - '/.gitlab/pipeline/jobs/func-php8.1-v11-highest.yml' - '/.gitlab/pipeline/jobs/func-php8.1-v11-lowest.yml' - - '/.gitlab/pipeline/jobs/func-php8.2-v11-highest.yml' - - '/.gitlab/pipeline/jobs/func-php8.2-v11-lowest.yml' - '/.gitlab/pipeline/jobs/func-php8.1-v12-highest.yml' - '/.gitlab/pipeline/jobs/func-php8.1-v12-lowest.yml' + - '/.gitlab/pipeline/jobs/func-php8.2-v11-highest.yml' + - '/.gitlab/pipeline/jobs/func-php8.2-v11-lowest.yml' - '/.gitlab/pipeline/jobs/func-php8.2-v12-highest.yml' - '/.gitlab/pipeline/jobs/func-php8.2-v12-lowest.yml' - '/.gitlab/pipeline/jobs/javascript-lint.yml' - '/.gitlab/pipeline/jobs/json-lint.yml' + - '/.gitlab/pipeline/jobs/php-cs-fixer.yml' - '/.gitlab/pipeline/jobs/php-lint-php7.4.yml' - '/.gitlab/pipeline/jobs/php-lint-php8.0.yml' - '/.gitlab/pipeline/jobs/php-lint-php8.1.yml' - '/.gitlab/pipeline/jobs/php-lint-php8.2.yml' - '/.gitlab/pipeline/jobs/php-lint-php8.3.yml' - '/.gitlab/pipeline/jobs/phpcs.yml' - - '/.gitlab/pipeline/jobs/php-cs-fixer.yml' - '/.gitlab/pipeline/jobs/typoscript-lint.yml' - '/.gitlab/pipeline/jobs/unit-php7.4-v11-highest.yml' - '/.gitlab/pipeline/jobs/unit-php7.4-v11-lowest.yml' @@ -42,14 +42,14 @@ include: - '/.gitlab/pipeline/jobs/unit-php8.0-v11-lowest.yml' - '/.gitlab/pipeline/jobs/unit-php8.1-v11-highest.yml' - '/.gitlab/pipeline/jobs/unit-php8.1-v11-lowest.yml' - - '/.gitlab/pipeline/jobs/unit-php8.2-v11-highest.yml' - - '/.gitlab/pipeline/jobs/unit-php8.2-v11-lowest.yml' - - '/.gitlab/pipeline/jobs/unit-php8.3-v11-highest.yml' - - '/.gitlab/pipeline/jobs/unit-php8.3-v11-lowest.yml' - '/.gitlab/pipeline/jobs/unit-php8.1-v12-highest.yml' - '/.gitlab/pipeline/jobs/unit-php8.1-v12-lowest.yml' + - '/.gitlab/pipeline/jobs/unit-php8.2-v11-highest.yml' + - '/.gitlab/pipeline/jobs/unit-php8.2-v11-lowest.yml' - '/.gitlab/pipeline/jobs/unit-php8.2-v12-highest.yml' - '/.gitlab/pipeline/jobs/unit-php8.2-v12-lowest.yml' + - '/.gitlab/pipeline/jobs/unit-php8.3-v11-highest.yml' + - '/.gitlab/pipeline/jobs/unit-php8.3-v11-lowest.yml' - '/.gitlab/pipeline/jobs/unit-php8.3-v12-highest.yml' - '/.gitlab/pipeline/jobs/unit-php8.3-v12-lowest.yml' - '/.gitlab/pipeline/jobs/xliff-lint.yml' From ef1e39b20dc371ef60411de244e0de8f489aa50e Mon Sep 17 00:00:00 2001 From: Oliver Klee Date: Fri, 27 Sep 2024 16:17:18 +0200 Subject: [PATCH 07/19] [TASK] Bump the Symfony development dependencies (#1468) For development versions, we don't need to bother supporting lower versions of dependencies. --- composer.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index 64d1665..a230c47 100644 --- a/composer.json +++ b/composer.json @@ -64,9 +64,9 @@ "squizlabs/php_codesniffer": "^3.10.3", "ssch/typo3-rector": "^2.7.0", "ssch/typo3-rector-testing-framework": "^2.0.1", - "symfony/console": "^5.4 || ^6.4 || ^7.0", - "symfony/translation": "^5.4 || ^6.4 || ^7.0", - "symfony/yaml": "^5.4 || ^6.4 || ^7.0", + "symfony/console": "^5.4.44 || ^6.4.12 || ^7.1.5", + "symfony/translation": "^5.4.44 || ^6.4.12 || ^7.1.5", + "symfony/yaml": "^5.4.44 || ^6.4.12 || ^7.1.5", "tomasvotruba/cognitive-complexity": "^0.2.3", "tomasvotruba/type-coverage": "^0.3.1", "typo3/cms-fluid-styled-content": "^11.5.4 || ^12.4.2", From d8323ffb2dddf92ba18cd4c7b594248fd02a72f0 Mon Sep 17 00:00:00 2001 From: Oliver Klee Date: Sun, 29 Sep 2024 08:56:01 +0200 Subject: [PATCH 08/19] [TASK] Used fixed versions for most development dependencies (#1475) We don't want our build to break when a new version of a development dependency like PHPUnit or PHPStan gets released. Instead, we want to be able to examine the (possibly changed) behavior in the pull request by Dependabot that updates this dependency. --- composer.json | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/composer.json b/composer.json index a230c47..dbba5be 100644 --- a/composer.json +++ b/composer.json @@ -47,31 +47,31 @@ "typo3/cms-frontend": "^11.5.4 || ^12.4.2" }, "require-dev": { - "ergebnis/composer-normalize": "^2.43.0", - "friendsofphp/php-cs-fixer": "^3.64.0", - "helmich/typo3-typoscript-lint": "^3.1.1", - "icanhazstring/composer-unused": "^0.8.11", - "php-parallel-lint/php-parallel-lint": "^1.4", - "phpmd/phpmd": "^2.15.0", - "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^1.12.5", - "phpstan/phpstan-phpunit": "^1.4.0", - "phpstan/phpstan-strict-rules": "^1.6.1", - "phpunit/phpunit": "^9.6.20", - "saschaegerer/phpstan-typo3": "^1.10.2", - "seld/jsonlint": "^1.11.0", - "spaze/phpstan-disallowed-calls": "^3.4", - "squizlabs/php_codesniffer": "^3.10.3", - "ssch/typo3-rector": "^2.7.0", - "ssch/typo3-rector-testing-framework": "^2.0.1", + "ergebnis/composer-normalize": "2.43.0", + "friendsofphp/php-cs-fixer": "3.64.0", + "helmich/typo3-typoscript-lint": "3.1.1", + "icanhazstring/composer-unused": "0.8.11", + "php-parallel-lint/php-parallel-lint": "1.4.0", + "phpmd/phpmd": "2.15.0", + "phpstan/extension-installer": "1.4.3", + "phpstan/phpstan": "1.12.5", + "phpstan/phpstan-phpunit": "1.4.0", + "phpstan/phpstan-strict-rules": "1.6.1", + "phpunit/phpunit": "9.6.20", + "saschaegerer/phpstan-typo3": "1.10.2", + "seld/jsonlint": "1.11.0", + "spaze/phpstan-disallowed-calls": "3.4.0", + "squizlabs/php_codesniffer": "3.10.3", + "ssch/typo3-rector": "2.7.0", + "ssch/typo3-rector-testing-framework": "2.0.1", "symfony/console": "^5.4.44 || ^6.4.12 || ^7.1.5", "symfony/translation": "^5.4.44 || ^6.4.12 || ^7.1.5", "symfony/yaml": "^5.4.44 || ^6.4.12 || ^7.1.5", - "tomasvotruba/cognitive-complexity": "^0.2.3", - "tomasvotruba/type-coverage": "^0.3.1", + "tomasvotruba/cognitive-complexity": "0.2.3", + "tomasvotruba/type-coverage": "0.3.1", "typo3/cms-fluid-styled-content": "^11.5.4 || ^12.4.2", - "typo3/coding-standards": "^0.6.1 || ^0.8.0", - "typo3/testing-framework": "^7.1.0", + "typo3/coding-standards": "0.6.1 || 0.8.0", + "typo3/testing-framework": "7.1.0", "webmozart/assert": "^1.11.0" }, "replace": { From a3d72de1dea0f6692f01ef5b95db8a7d8c8a777b Mon Sep 17 00:00:00 2001 From: Oliver Klee Date: Mon, 30 Sep 2024 07:21:41 +0200 Subject: [PATCH 09/19] [FEATURE] Add Composer scripts and a CI job for Rector (#1459) * [FEATURE] Add Composer scripts and a CI job for Rector Closes #851 --- .github/workflows/ci.yml | 1 + .gitlab/pipeline/.gitlab-ci.yml | 1 + .gitlab/pipeline/jobs/rector.yml | 11 +++++++++++ composer.json | 6 ++++++ 4 files changed, 19 insertions(+) create mode 100644 .gitlab/pipeline/jobs/rector.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e296a7c..e59e02a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -83,6 +83,7 @@ jobs: - "json:lint" - "php:cs-fixer" - "php:mess" + - "php:rector" - "php:sniff" - "php:stan" - "typoscript:lint" diff --git a/.gitlab/pipeline/.gitlab-ci.yml b/.gitlab/pipeline/.gitlab-ci.yml index 0523d6a..ee51fac 100644 --- a/.gitlab/pipeline/.gitlab-ci.yml +++ b/.gitlab/pipeline/.gitlab-ci.yml @@ -35,6 +35,7 @@ include: - '/.gitlab/pipeline/jobs/php-lint-php8.2.yml' - '/.gitlab/pipeline/jobs/php-lint-php8.3.yml' - '/.gitlab/pipeline/jobs/phpcs.yml' + - '/.gitlab/pipeline/jobs/rector.yml' - '/.gitlab/pipeline/jobs/typoscript-lint.yml' - '/.gitlab/pipeline/jobs/unit-php7.4-v11-highest.yml' - '/.gitlab/pipeline/jobs/unit-php7.4-v11-lowest.yml' diff --git a/.gitlab/pipeline/jobs/rector.yml b/.gitlab/pipeline/jobs/rector.yml new file mode 100644 index 0000000..013e940 --- /dev/null +++ b/.gitlab/pipeline/jobs/rector.yml @@ -0,0 +1,11 @@ +rector: + extends: .default + stage: codestyle + needs: + - build-composer-dependencies + - php-lint-php7.4 + - php-lint-php8.0 + - php-lint-php8.1 + - php-lint-php8.2 + script: + - composer ci:php:rector diff --git a/composer.json b/composer.json index dbba5be..8bbfcee 100644 --- a/composer.json +++ b/composer.json @@ -147,6 +147,7 @@ "ci:php:cs-fixer": "php-cs-fixer fix --config .php-cs-fixer.php -v --dry-run --diff", "ci:php:lint": "parallel-lint .*.php *.php Classes Configuration Tests", "ci:php:mess": "phpmd Classes text Build/phpmd/phpmd.xml", + "ci:php:rector": "rector --dry-run", "ci:php:sniff": "phpcs --standard=Build/phpcs/phpcs.xml Classes Configuration Tests", "ci:php:stan": "phpstan --no-progress -v", "ci:static": [ @@ -155,6 +156,7 @@ "@ci:json:lint", "@ci:php:cs-fixer", "@ci:php:lint", + "@ci:php:rector", "@ci:php:sniff", "@ci:php:stan", "@ci:typoscript:lint", @@ -174,10 +176,12 @@ "docs:generate": "docker run --rm --pull always -v $(pwd):/project -it ghcr.io/typo3-documentation/render-guides:latest --config=Documentation", "fix:composer:normalize": "@composer normalize --no-check-lock", "fix:php": [ + "@fix:php:rector", "@fix:php:cs", "@fix:php:sniff" ], "fix:php:cs": "php-cs-fixer fix --config .php-cs-fixer.php", + "fix:php:rector": "rector", "fix:php:sniff": "phpcbf --standard=Build/phpcs/phpcs.xml Classes Configuration Tests", "phpstan:baseline": "phpstan --generate-baseline --allow-empty-baseline", "prepare-release": [ @@ -218,6 +222,7 @@ "ci:php:cs-fixer": "Checks the code style with the PHP Coding Standards Fixer (PHP-CS-Fixer).", "ci:php:lint": "Lints the PHP files for syntax errors.", "ci:php:mess": "Runs PHP mess detection.", + "ci:php:rector": "Checks for code for changes by Rector.", "ci:php:sniff": "Checks the code style with PHP_CodeSniffer (PHPCS).", "ci:php:stan": "Checks the PHP types using PHPStan.", "ci:static": "Runs all static code checks (syntax, style, types).", @@ -232,6 +237,7 @@ "fix:composer:normalize": "Normalizes composer.json file content.", "fix:php": "Runs all fixers for the PHP code.", "fix:php:cs": "Fixes the code style with PHP-CS-Fixer.", + "fix:php:rector": "Updates the code with Rector.", "fix:php:sniff": "Fixes the code style with PHP_CodeSniffer.", "phpstan:baseline": "Updates the PHPStan baseline file to match the code.", "prepare-release": "Removes development-only files in preparation of a TER release." From 9ad48b528f958cea4b1e7f4f63411a010f90e07c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 15:51:06 +0000 Subject: [PATCH 10/19] [TASK] Update ssch/typo3-rector requirement from 2.7.0 to 2.8.0 (#1476) Updates the requirements on [ssch/typo3-rector](https://github.com/sabbelasichon/typo3-rector) to permit the latest version. - [Release notes](https://github.com/sabbelasichon/typo3-rector/releases) - [Commits](https://github.com/sabbelasichon/typo3-rector/compare/v2.7.0...v2.8.0) --- updated-dependencies: - dependency-name: ssch/typo3-rector dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 8bbfcee..aac766f 100644 --- a/composer.json +++ b/composer.json @@ -62,7 +62,7 @@ "seld/jsonlint": "1.11.0", "spaze/phpstan-disallowed-calls": "3.4.0", "squizlabs/php_codesniffer": "3.10.3", - "ssch/typo3-rector": "2.7.0", + "ssch/typo3-rector": "2.8.0", "ssch/typo3-rector-testing-framework": "2.0.1", "symfony/console": "^5.4.44 || ^6.4.12 || ^7.1.5", "symfony/translation": "^5.4.44 || ^6.4.12 || ^7.1.5", From 13be4d6c372efcfe719407e616476b7b39f94195 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 06:01:13 +0000 Subject: [PATCH 11/19] [TASK] Update ergebnis/composer-normalize requirement (#1477) Updates the requirements on [ergebnis/composer-normalize](https://github.com/ergebnis/composer-normalize) to permit the latest version. - [Release notes](https://github.com/ergebnis/composer-normalize/releases) - [Changelog](https://github.com/ergebnis/composer-normalize/blob/main/CHANGELOG.md) - [Commits](https://github.com/ergebnis/composer-normalize/compare/2.43.0...2.44.0) --- updated-dependencies: - dependency-name: ergebnis/composer-normalize dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index aac766f..d402038 100644 --- a/composer.json +++ b/composer.json @@ -47,7 +47,7 @@ "typo3/cms-frontend": "^11.5.4 || ^12.4.2" }, "require-dev": { - "ergebnis/composer-normalize": "2.43.0", + "ergebnis/composer-normalize": "2.44.0", "friendsofphp/php-cs-fixer": "3.64.0", "helmich/typo3-typoscript-lint": "3.1.1", "icanhazstring/composer-unused": "0.8.11", From 1a4fc18b6c32f987f327d213e80579110ce45ce9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Oct 2024 05:15:37 +0000 Subject: [PATCH 12/19] [TASK] Update tomasvotruba/type-coverage requirement from 0.3.1 to 1.0.0 (#1478) Updates the requirements on [tomasvotruba/type-coverage](https://github.com/TomasVotruba/type-coverage) to permit the latest version. - [Commits](https://github.com/TomasVotruba/type-coverage/compare/0.3.1...1.0.0) --- updated-dependencies: - dependency-name: tomasvotruba/type-coverage dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index d402038..be58bc3 100644 --- a/composer.json +++ b/composer.json @@ -68,7 +68,7 @@ "symfony/translation": "^5.4.44 || ^6.4.12 || ^7.1.5", "symfony/yaml": "^5.4.44 || ^6.4.12 || ^7.1.5", "tomasvotruba/cognitive-complexity": "0.2.3", - "tomasvotruba/type-coverage": "0.3.1", + "tomasvotruba/type-coverage": "1.0.0", "typo3/cms-fluid-styled-content": "^11.5.4 || ^12.4.2", "typo3/coding-standards": "0.6.1 || 0.8.0", "typo3/testing-framework": "7.1.0", From 210c5620416adb4fa6f6e087449cd77eb57d5374 Mon Sep 17 00:00:00 2001 From: gittibitti Date: Tue, 17 Sep 2024 13:59:31 +0200 Subject: [PATCH 13/19] [TASK] Add php.ini from development --- .gitlab/pipeline/ci/php.ini | 193 +++++++++++++++++++++++++++++ .gitlab/pipeline/jobs/.default.yml | 4 + 2 files changed, 197 insertions(+) create mode 100644 .gitlab/pipeline/ci/php.ini diff --git a/.gitlab/pipeline/ci/php.ini b/.gitlab/pipeline/ci/php.ini new file mode 100644 index 0000000..de88538 --- /dev/null +++ b/.gitlab/pipeline/ci/php.ini @@ -0,0 +1,193 @@ +[PHP] +engine = On +short_open_tag = Off +precision = 14 +output_buffering = 4096 +zlib.output_compression = Off +implicit_flush = Off +unserialize_callback_func = +serialize_precision = -1 +disable_functions = +disable_classes = +zend.enable_gc = On +expose_php = Off +; Resource Limits ; +max_execution_time = 600 +request_terminate_timeout = 0 +max_input_time = -1 +;max_input_nesting_level = 64 +max_input_vars = 5000 +memory_limit = -1 +; Error handling and logging ; +error_reporting = E_ALL +display_errors = On +display_startup_errors = On +log_errors = On +log_errors_max_len = 1024 +ignore_repeated_errors = Off +ignore_repeated_source = Off +report_memleaks = On +;xmlrpc_errors = 0 +;xmlrpc_error_number = 0 +html_errors = On +; Data Handling ; +variables_order = "EGPCS" +request_order = "GP" +register_argc_argv = Off +auto_globals_jit = On +post_max_size = 100M +auto_prepend_file = +auto_append_file = +default_mimetype = "text/html" +default_charset = "UTF-8" +; Paths and Directories ; +doc_root = +user_dir = +enable_dl = Off +cgi.fix_pathinfo=0 +; File Uploads ; +file_uploads = On +upload_max_filesize = 100M +max_file_uploads = 20 +; Fopen wrappers ; +allow_url_fopen = On +allow_url_include = Off +default_socket_timeout = 60 +;auto_detect_line_endings = Off +; Dynamic Extensions ; + +[CLI Server] +cli_server.color = On + +[Date] +date.timezone = UTC + +[Pdo_mysql] +pdo_mysql.cache_size = 2000 +pdo_mysql.default_socket= + +[mail function] +SMTP = localhost +smtp_port = 25 +mail.add_x_header = On +sendmail_path="/usr/local/bin/mailpit sendmail -t --smtp-addr 127.0.0.1:1025" + +[SQL] +sql.safe_mode = Off + +[ODBC] +odbc.allow_persistent = On +odbc.check_persistent = On +odbc.max_persistent = -1 +odbc.max_links = -1 +odbc.defaultlrl = 4096 +odbc.defaultbinmode = 1 + +[Interbase] +ibase.allow_persistent = 1 +ibase.max_persistent = -1 +ibase.max_links = -1 +ibase.timestampformat = "%Y-%m-%d %H:%M:%S" +ibase.dateformat = "%Y-%m-%d" +ibase.timeformat = "%H:%M:%S" + +[MySQLi] +mysqli.max_persistent = -1 +mysqli.allow_persistent = On +mysqli.max_links = -1 +mysqli.cache_size = 2000 +mysqli.default_port = 3306 +mysqli.default_socket = +mysqli.default_host = +mysqli.default_user = +mysqli.default_pw = +mysqli.reconnect = Off + +[mysqlnd] +mysqlnd.collect_statistics = On +mysqlnd.collect_memory_statistics = Off + +[PostgreSQL] +pgsql.allow_persistent = On +pgsql.auto_reset_persistent = Off +pgsql.max_persistent = -1 +pgsql.max_links = -1 +pgsql.ignore_notice = 0 +pgsql.log_notice = 0 + +[bcmath] +bcmath.scale = 0 + +[Session] +session.save_handler = files +session.use_strict_mode = 0 +session.use_cookies = 1 +session.use_only_cookies = 1 +session.name = PHPSESSID +session.auto_start = 0 +session.cookie_lifetime = 0 +session.cookie_path = / +session.cookie_domain = +session.cookie_httponly = +session.serialize_handler = php +session.gc_probability = 0 +session.gc_divisor = 1000 +session.gc_maxlifetime = 1440 +session.referer_check = +session.cache_limiter = nocache +session.cache_expire = 180 +session.use_trans_sid = 0 +session.hash_function = 0 +session.hash_bits_per_character = 5 +url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" + +[Assertion] +zend.assertions = -1 + +[Tidy] +tidy.clean_output = Off + +[soap] +soap.wsdl_cache_enabled=1 +soap.wsdl_cache_dir="/tmp" +soap.wsdl_cache_ttl=86400 +soap.wsdl_cache_limit = 5 + + +[ldap] +ldap.max_links = -1 + +[opcache] +opcache.enable=1 +opcache.enable_cli=1 +opcache.memory_consumption=500 +opcache.interned_strings_buffer=16 +opcache.max_accelerated_files=1000000 +;opcache.max_wasted_percentage=5 +;opcache.use_cwd=1 +opcache.validate_timestamps=1 +opcache.revalidate_freq=0 +;opcache.revalidate_path=0 +;opcache.save_comments=1 +opcache.fast_shutdown=1 +;opcache.enable_file_override=0 +;opcache.optimization_level=0xffffffff +;opcache.inherited_hack=1 +;opcache.dups_fix=0 +;opcache.blacklist_filename= +;opcache.max_file_size=0 +;opcache.consistency_checks=0 +;opcache.force_restart_timeout=180 +;opcache.error_log= +;opcache.log_verbosity_level=1 +;opcache.preferred_memory_model= +;opcache.protect_memory=0 +;opcache.restrict_api= +;opcache.mmap_base= +;opcache.file_cache= +;opcache.file_cache_only=0 +;opcache.file_cache_consistency_checks=1 +;opcache.file_cache_fallback=1 +;opcache.huge_code_pages=1 +;opcache.validate_permission=0 +;opcache.validate_root=0 diff --git a/.gitlab/pipeline/jobs/.default.yml b/.gitlab/pipeline/jobs/.default.yml index 078f266..5d7142a 100644 --- a/.gitlab/pipeline/jobs/.default.yml +++ b/.gitlab/pipeline/jobs/.default.yml @@ -2,3 +2,7 @@ image: ghcr.io/typo3/core-testing-php83:latest before_script: - bash .gitlab/build/docker_install.sh > /dev/null + variables: + PHP_INI_SCAN_DIR: "/etc/php" + volumes: + - ../ci/php.ini:/usr/local/etc/php/php.ini \ No newline at end of file From f31fb452fca254b78420b6e947ab4495038ffafd Mon Sep 17 00:00:00 2001 From: gittibitti Date: Tue, 17 Sep 2024 14:37:45 +0200 Subject: [PATCH 14/19] [TASK] Delet mail section from php.ini --- .gitlab/pipeline/ci/php.ini | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.gitlab/pipeline/ci/php.ini b/.gitlab/pipeline/ci/php.ini index de88538..74da89a 100644 --- a/.gitlab/pipeline/ci/php.ini +++ b/.gitlab/pipeline/ci/php.ini @@ -66,12 +66,6 @@ date.timezone = UTC pdo_mysql.cache_size = 2000 pdo_mysql.default_socket= -[mail function] -SMTP = localhost -smtp_port = 25 -mail.add_x_header = On -sendmail_path="/usr/local/bin/mailpit sendmail -t --smtp-addr 127.0.0.1:1025" - [SQL] sql.safe_mode = Off From 012a9b14114615f77eee4dde8fe7cb3f2b1297f6 Mon Sep 17 00:00:00 2001 From: gittibitti Date: Tue, 17 Sep 2024 14:43:09 +0200 Subject: [PATCH 15/19] [TASK] Add LF and fix the volumes --- .gitlab/pipeline/jobs/.default.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab/pipeline/jobs/.default.yml b/.gitlab/pipeline/jobs/.default.yml index 5d7142a..f952fd4 100644 --- a/.gitlab/pipeline/jobs/.default.yml +++ b/.gitlab/pipeline/jobs/.default.yml @@ -5,4 +5,4 @@ variables: PHP_INI_SCAN_DIR: "/etc/php" volumes: - - ../ci/php.ini:/usr/local/etc/php/php.ini \ No newline at end of file + - ./ci/php.ini:/usr/local/etc/php/php.ini From 82a1df5edabb2395de2eebfbce56cb6b489d9f7e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 14:53:53 +0000 Subject: [PATCH 16/19] [TASK] Update ssch/typo3-rector requirement from 2.8.0 to 2.9.2 (#1485) Updates the requirements on [ssch/typo3-rector](https://github.com/sabbelasichon/typo3-rector) to permit the latest version. - [Release notes](https://github.com/sabbelasichon/typo3-rector/releases) - [Commits](https://github.com/sabbelasichon/typo3-rector/compare/v2.8.0...v2.9.2) --- updated-dependencies: - dependency-name: ssch/typo3-rector dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index be58bc3..a90fd56 100644 --- a/composer.json +++ b/composer.json @@ -62,7 +62,7 @@ "seld/jsonlint": "1.11.0", "spaze/phpstan-disallowed-calls": "3.4.0", "squizlabs/php_codesniffer": "3.10.3", - "ssch/typo3-rector": "2.8.0", + "ssch/typo3-rector": "2.9.2", "ssch/typo3-rector-testing-framework": "2.0.1", "symfony/console": "^5.4.44 || ^6.4.12 || ^7.1.5", "symfony/translation": "^5.4.44 || ^6.4.12 || ^7.1.5", From c99b073bf619af0c9754d7e7cd38271967ca2839 Mon Sep 17 00:00:00 2001 From: Muhammad Salman <151463017+SalmanDeveloperz@users.noreply.github.com> Date: Sun, 6 Oct 2024 23:20:31 +0500 Subject: [PATCH 17/19] [TASK] Rework the testing framework section in the docs (#1480) --- Documentation/Index.rst | 2 +- Documentation/ReleaseBranchingStrategy.rst | 65 ++++++++++++++++++++++ Documentation/TestingFramework.rst | 57 ------------------- 3 files changed, 66 insertions(+), 58 deletions(-) create mode 100644 Documentation/ReleaseBranchingStrategy.rst delete mode 100644 Documentation/TestingFramework.rst diff --git a/Documentation/Index.rst b/Documentation/Index.rst index a53417b..0bcfdb5 100644 --- a/Documentation/Index.rst +++ b/Documentation/Index.rst @@ -44,7 +44,7 @@ continuous integration. Introduction PHPVersionSupport - TestingFramework + ReleaseBranchingStrategy Environment DependencyManager Running diff --git a/Documentation/ReleaseBranchingStrategy.rst b/Documentation/ReleaseBranchingStrategy.rst new file mode 100644 index 0000000..6fa141d --- /dev/null +++ b/Documentation/ReleaseBranchingStrategy.rst @@ -0,0 +1,65 @@ +.. include:: /Includes.rst.txt + +.. _release-branching-strategy: + +============================== +Release and Branching Strategy +============================== + +When maintaining TYPO3 extensions, developers often need to support multiple +TYPO3 Long-Term Support (LTS) versions simultaneously. This typically requires +a clear release and branching strategy to manage development and maintenance +across different TYPO3 versions. + +There are two common strategies for managing branches when supporting multiple +TYPO3 LTS versions. + +.. contents:: Table of Contents: + :backlinks: top + :class: compact-list + :depth: 2 + :local: + +.. _release-branching-strategy-one-branch: + +Approach 1: One branch for multiple TYPO3 LTS versions +====================================================== + +In this approach, there is a single main branch that receives new features and +updates, while supporting multiple TYPO3 LTS versions at the same time. + +The downside of this approach is that it may require some version-dependent +code switches, which can increase complexity. However, the major advantage is +that there is only one branch to maintain, making it easier to implement new +features and code changes across all supported TYPO3 versions. + +This approach simplifies the maintenance of the extension and is preferred when +minimizing maintenance overhead is the primary concern. + +.. _release-branching-strategy-multiple-branches: + +Approach 2: Separate branch per TYPO3 LTS version +================================================= + +In this approach, there is one main branch for each TYPO3 LTS version. This +means that each branch exclusively supports a single TYPO3 LTS version. + +The advantage here is that version-specific code can be used without requiring +version-dependent switches, reducing complexity in the codebase. However, this +approach increases the maintenance burden, as any new features or updates must +be applied to each branch individually. + +This approach may be necessary when there are significant differences between +TYPO3 LTS versions or when you want to avoid version-dependent code. + +.. _release-strategy-conclusion: + +Conclusion +========== + +The appropriate release and branching strategy depends on the specific +requirements of the extension and the TYPO3 versions you are supporting. If +reducing maintenance complexity is a priority, using a single branch for +multiple versions is often the better choice. However, if you need to tailor +your extension for each version, a separate branch for each version may be more +suitable. diff --git a/Documentation/TestingFramework.rst b/Documentation/TestingFramework.rst deleted file mode 100644 index 1cdd068..0000000 --- a/Documentation/TestingFramework.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. include:: /Includes.rst.txt - -.. _testing-framework: - -================= -Testing framework -================= - -Extensions usually need to support two LTS versions of TYPO3 in parallel, -assuming that they should support all currently supported TYPO3 LTS versions. -To achieve this, there are two different approaches, which also affect the -choice of a testing framework for unit and functional tests. - -.. contents:: Table of Contents: - :backlinks: top - :class: compact-list - :depth: 2 - :local: - -.. _testing-framework-approach-many-versions: - -Approach 1: One branch for many TYPO3 LTS versions -================================================== - -With this approach, there is one main branch that gets new features. It needs to -support two TYPO3 LTS versions in parallel. - -The downside is that this slightly increases code complexity as -version-dependent code switches might be necessary. The upside is that there -is only one branch to maintain, which makes adding new features (and all other -code changes) a lot less of a hassle. - -The `Nimut testing framework `__ -can support multiple TYPO3 versions at a time, and -it provides version-independent abstractions for testing, making it the perfect -companion for this approach. - -This is the approach that we have chosen for this extension as we do not want -to maintain two branches in parallel. - -.. _testing-framework-approach-one-version: - -Approach 2: One branch per TYPO3 LTS version -============================================ - -With this approach, there are two main branches that get new features in -parallel. Each branch supports exactly one TYPO3 LTS version. - -The upside is that this slightly decreases code complexity as -version-dependent code switches are not necessary. The downside is that there -are two branches to maintain, which makes adding new features (and all other -code changes) more of a hassle. - -For this approach, the -`TYPO3 testing framework `__ -- which supports only one TYPO3 LTS version at a time - will work just fine. - From f93c998a925c73bad9c61bb630a94b97343d3e0b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 18:34:47 +0000 Subject: [PATCH 18/19] [TASK] Update phpstan/phpstan requirement from 1.12.5 to 1.12.6 (#1486) Updates the requirements on [phpstan/phpstan](https://github.com/phpstan/phpstan) to permit the latest version. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/2.0.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.12.5...1.12.6) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index a90fd56..5631045 100644 --- a/composer.json +++ b/composer.json @@ -54,7 +54,7 @@ "php-parallel-lint/php-parallel-lint": "1.4.0", "phpmd/phpmd": "2.15.0", "phpstan/extension-installer": "1.4.3", - "phpstan/phpstan": "1.12.5", + "phpstan/phpstan": "1.12.6", "phpstan/phpstan-phpunit": "1.4.0", "phpstan/phpstan-strict-rules": "1.6.1", "phpunit/phpunit": "9.6.20", From 9446d14b77fc93f71689c6f3f9cb36f62b918e45 Mon Sep 17 00:00:00 2001 From: Oliver Klee Date: Sun, 6 Oct 2024 20:50:24 +0200 Subject: [PATCH 19/19] [TASK] Move a repository test from unit to functional (#1484) Unit tests for repositories are quite a hassle as we then need to set up all dependencies in `setUp()` ourselves. So convert the test to a functional tests where we can rely on the container to create and initialize the subject for us. --- .../Domain/Repository/TeaRepositoryTest.php | 9 +++++ .../Domain/Repository/TeaRepositoryTest.php | 39 ------------------- 2 files changed, 9 insertions(+), 39 deletions(-) delete mode 100644 Tests/Unit/Domain/Repository/TeaRepositoryTest.php diff --git a/Tests/Functional/Domain/Repository/TeaRepositoryTest.php b/Tests/Functional/Domain/Repository/TeaRepositoryTest.php index d781747..08f6558 100644 --- a/Tests/Functional/Domain/Repository/TeaRepositoryTest.php +++ b/Tests/Functional/Domain/Repository/TeaRepositoryTest.php @@ -8,6 +8,7 @@ use TTN\Tea\Domain\Model\Tea; use TTN\Tea\Domain\Repository\TeaRepository; use TYPO3\CMS\Extbase\Domain\Model\FileReference; use TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface; +use TYPO3\CMS\Extbase\Persistence\Repository; use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase; /** @@ -31,6 +32,14 @@ final class TeaRepositoryTest extends FunctionalTestCase $this->subject = $this->get(TeaRepository::class); } + /** + * @test + */ + public function isRepository(): void + { + self::assertInstanceOf(Repository::class, $this->subject); + } + /** * @test */ diff --git a/Tests/Unit/Domain/Repository/TeaRepositoryTest.php b/Tests/Unit/Domain/Repository/TeaRepositoryTest.php deleted file mode 100644 index c7e9e8b..0000000 --- a/Tests/Unit/Domain/Repository/TeaRepositoryTest.php +++ /dev/null @@ -1,39 +0,0 @@ -createStub(ObjectManagerInterface::class); - // @phpstan-ignore-next-line This line is 11LTS-specific, but we're running PHPStan on TYPO3 12. - $this->subject = new TeaRepository($objectManagerStub); - } else { - $this->subject = new TeaRepository(); - } - } - - /** - * @test - */ - public function isRepository(): void - { - self::assertInstanceOf(Repository::class, $this->subject); - } -}