mirror of https://github.com/FriendsOfTYPO3/tea.git synced 2024-11-21 17:36:13 +01:00

Compare commits

...

67 commits

Author SHA1 Message Date
Karsten Nowak
055a2f07bc [BUGFIX] Fix error with spread operator in php 7.4
In php 7.4 error occured:
`Cannot unpack array with string keys`

Related #1120
2024-10-20 11:49:44 +02:00
Karsten Nowak
bf7ade8f98 [BUGFIX] Fix some php stan errors
Related #1120
2024-10-20 11:49:44 +02:00
Karsten Nowak
f86b37df41 [TASK] Remove unused imports
Related #1120
2024-10-20 11:49:44 +02:00
Karsten Nowak
a1cf83ccbc [TASK] Rename test functions
Related #1120
2024-10-20 11:49:44 +02:00
Karsten Nowak
a4ba103993 [TASK] Check that existing teas in other pids were not deleted
Related #1120
2024-10-20 11:49:44 +02:00
13b1116532 Fix broken functional test
SQLite does reset the UID autoincrement during deletion.
That way the assertions do not match.
We now use a different set up and remove the uids from assertions.

That way we still ensure that the imported data is removed and new data
is imported. We do not need to care about UID.
2024-10-20 11:49:44 +02:00
Karsten Nowak
271bd24c4f [TASK] Add functional test for createTestDataCommand
Related #1120
2024-10-20 11:49:44 +02:00
Karsten Nowak
1af328f27b [TASK] Remove unnecessary is_int check of pageUid
Related #1120
2024-10-20 11:49:44 +02:00
Karsten Nowak
e3544f4ade [TASK] Update reference index after changing test data
Related #1120
2024-10-20 11:49:44 +02:00
Karsten Nowak
18b804f179 [TASK] use assert to state data restrictions
Related #1120
2024-10-20 11:49:44 +02:00
Karsten Nowak
d1420a21b3 [TASK] Rename pageId to pageUid
Related #1120
2024-10-20 11:49:44 +02:00
Karsten Nowak
8200302d31 [TASK] Move comment directly above the class
Related #1120
2024-10-20 11:49:44 +02:00
Karsten Nowak
dd1f4832ff Update Classes/Command/CreateTestDataCommand.php
Co-authored-by: Oliver Klee <typo3-coding@oliverklee.de>
2024-10-20 11:49:44 +02:00
Karsten Nowak
5ad2d2d8ad Update Classes/Command/CreateTestDataCommand.php
Co-authored-by: Oliver Klee <typo3-coding@oliverklee.de>
2024-10-20 11:49:43 +02:00
Karsten Nowak
72d449b9bd [BUGFIX] Fix errors from php cs fixer
Related: #1120
2024-10-20 11:49:43 +02:00
Karsten Nowak
277a167621 [DOCS] Add documentation part for command controller
Related: #1120
2024-10-20 11:49:43 +02:00
Karsten Nowak
cc64515cd6 [TASK] Remove phpDocumentor reflection type
Related: #1120
2024-10-20 11:49:43 +02:00
Karsten Nowak
b42f6ed08e [FEATURE] Add command controller to create test data
Related: #11120
2024-10-20 11:49:43 +02:00
dependabot[bot]
94487006b1
[TASK] Update phpstan/phpstan requirement from 1.12.6 to 1.12.7 (#1493)
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.6...1.12.7)

---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-19 16:39:27 +00:00
dependabot[bot]
bc0af0d503
[TASK] Update ssch/typo3-rector requirement from 2.10.1 to 2.10.2 (#1492)
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.10.1...v2.10.2)

---
updated-dependencies:
- dependency-name: ssch/typo3-rector
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-17 06:03:10 +00:00
dependabot[bot]
6b1c2d7670
[TASK] Update ssch/typo3-rector requirement from 2.9.2 to 2.10.1 (#1491)
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.9.2...v2.10.1)

---
updated-dependencies:
- dependency-name: ssch/typo3-rector
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-16 05:55:11 +00:00
Oliver Klee
9a8834998f
[TASK] Reorder the PHP-related steps in the ci:static script (#1489)
Check for syntax errors with PHP lint first, then check for
structural problems with Rector and PHPStan, and after that check
the coding style.
2024-10-13 17:19:52 +02:00
dependabot[bot]
7c4504600f
[TASK] Update spaze/phpstan-disallowed-calls requirement (#1488)
Updates the requirements on [spaze/phpstan-disallowed-calls](https://github.com/spaze/phpstan-disallowed-calls) to permit the latest version.
- [Release notes](https://github.com/spaze/phpstan-disallowed-calls/releases)
- [Commits](https://github.com/spaze/phpstan-disallowed-calls/compare/v3.4.0...v3.5.0)

---
updated-dependencies:
- dependency-name: spaze/phpstan-disallowed-calls
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-11 05:14:04 +00:00
bernd
f134e193cd
[TASK] Use the development php.ini on GitLab CI (#1481)
Fixes #1214
2024-10-07 21:01:36 +02:00
Oliver Klee
9446d14b77
[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.
2024-10-06 20:50:24 +02:00
dependabot[bot]
f93c998a92
[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] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-06 18:34:47 +00:00
Muhammad Salman
c99b073bf6
[TASK] Rework the testing framework section in the docs (#1480) 2024-10-06 20:20:31 +02:00
dependabot[bot]
82a1df5eda
[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] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-04 14:53:53 +00:00
dependabot[bot]
1a4fc18b6c
[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] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-02 05:15:37 +00:00
dependabot[bot]
13be4d6c37
[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] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-01 06:01:13 +00:00
dependabot[bot]
9ad48b528f
[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] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-30 15:51:06 +00:00
Oliver Klee
a3d72de1de
[FEATURE] Add Composer scripts and a CI job for Rector (#1459)
* [FEATURE] Add Composer scripts and a CI job for Rector

Closes #851
2024-09-30 07:21:41 +02:00
Oliver Klee
d8323ffb2d
[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.
2024-09-29 08:56:01 +02:00
Oliver Klee
ef1e39b20d
[TASK] Bump the Symfony development dependencies (#1468)
For development versions, we don't need to bother supporting
lower versions of dependencies.
2024-09-27 16:17:18 +02:00
Oliver Klee
b0a4a7c611
[TASK] Sort the includes for GitLab CI (#1464)
This will make maintenance of this file a bit easier.
2024-09-27 13:02:29 +02:00
dependabot[bot]
76eb2b22d5
[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] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-27 10:46:23 +00:00
Oliver Klee
adb2b6693e
[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.
2024-09-27 09:12:36 +02:00
dependabot[bot]
6e987aca7b
[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] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-26 13:09:39 +00:00
dependabot[bot]
8cbf6abd27
[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] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-20 14:18:02 +00:00
dependabot[bot]
3c5c350937
[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] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-19 08:30:37 +00:00
dependabot[bot]
1014f19fe5
[TASK] Update squizlabs/php_codesniffer requirement (#1465)
Updates the requirements on [squizlabs/php_codesniffer](https://github.com/PHPCSStandards/PHP_CodeSniffer) to permit the latest version.
- [Release notes](https://github.com/PHPCSStandards/PHP_CodeSniffer/releases)
- [Changelog](https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHPCSStandards/PHP_CodeSniffer/compare/3.10.2...3.10.3)

---
updated-dependencies:
- dependency-name: squizlabs/php_codesniffer
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-18 11:23:46 +00:00
bernd
026b13a52b
[TASK] Set npm to version 10.8.2 (#1463) 2024-09-17 15:08:09 +02:00
bernd
fb7b22a559
[TASK] Change the image to the official core testing image (#1462) 2024-09-17 14:32:40 +02:00
Łukasz Uznański
fdace0a094
[BUGFIX] Fix functional php8.2 v12 highest job in GitLab CI(#1460) 2024-09-17 13:34:16 +02:00
Oliver Klee
79601e8aa6
[TASK] Remove redundancies in the prepare-release Composer script (#1458)
We're already removing the whole `Build/` directory in this script.

So there is no need to also remove the individual files in this
directory.
2024-09-17 13:20:30 +02:00
bernd
ead187c779
[BUGFIX] Add node version 20.17.0 to package.json (#1457) 2024-09-17 12:42:15 +02:00
Łukasz Uznański
902097b7dd
[BUGFIX] Fix parallel lint in GitLab CI (#1456) 2024-09-17 12:23:40 +02:00
Łukasz Uznański
ac8c1248ea
[TASK] Move php sniff to Build dir (#1357)
Part of #1186
2024-09-17 11:41:40 +02:00
dependabot[bot]
ab23166274
[TASK] Update phpstan/phpstan requirement from ^1.12.2 to ^1.12.3 (#1454)
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.2...1.12.3)

---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-09 09:05:35 +00:00
Oliver Klee
022cdadec9
[TASK] Update the testing framework (#1453)
Co-authored-by: Daniel Siepmann <coding@daniel-siepmann.de>
2024-09-07 14:33:57 +02:00
bernd
534de16770
[TASK] Add two new ISSUE_TEMPLATES, feature and task (#1446)
* Update .github/ISSUE_TEMPLATE/feature.md
Co-authored-by: Oliver Klee <typo3-coding@oliverklee.de>
* Update .github/ISSUE_TEMPLATE/task.md
Co-authored-by: Oliver Klee <typo3-coding@oliverklee.de>
2024-09-07 12:33:23 +02:00
dependabot[bot]
db7bb0c73e
[TASK] Update phpstan/phpstan requirement from ^1.12.1 to ^1.12.2 (#1452)
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.1...1.12.2)

---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-06 06:05:49 +00:00
Oliver Klee
c5d9e1d08e
[TASK] Drop .phpstorm.meta.php (#1448)
With modern PHPDoc annotations and modern PhpStorm versions, this
file is not needed anymore.
2024-09-06 07:24:49 +02:00
Oliver Klee
a0fa00564c
[TASK] Unify the coverage-related directories (#1450)
As we'll need to have `build/logs/` for the merged coverage data
anyway, there is no point to have the separate coverage files
in `.Build/coverage/` instead of in `build/coverage/`.

Now the setup is more consistent.

Please note that this only affects the CI builds as we usually
only collect coverage data there for the pull requests.
2024-09-06 07:23:29 +02:00
dependabot[bot]
22598ef789
[TASK] Update phpstan/extension-installer requirement (#1449)
Updates the requirements on [phpstan/extension-installer](https://github.com/phpstan/extension-installer) to permit the latest version.
- [Release notes](https://github.com/phpstan/extension-installer/releases)
- [Commits](https://github.com/phpstan/extension-installer/compare/1.4.2...1.4.3)

---
updated-dependencies:
- dependency-name: phpstan/extension-installer
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-05 05:26:41 +00:00
dependabot[bot]
b56fd9f764
[TASK] Update phpstan/phpstan requirement from ^1.12.0 to ^1.12.1 (#1445)
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/1.12.x/CHANGELOG.md)
- [Commits](https://github.com/phpstan/phpstan/compare/1.12.0...1.12.1)

---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-03 20:12:36 +00:00
Oliver Klee
849087af95
[TASK] Switch to the Coveralls GitHub action (#1430)
Unfortunately, with the GitHub Action, we need to go back to
using the path `build/logs/clover.xml` for the combined coverage file.

Closes #1431
2024-09-02 19:05:19 +02:00
dependabot[bot]
2b8fc34df4
[TASK] Update friendsofphp/php-cs-fixer requirement (#1443)
Updates the requirements on [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) to permit the latest version.
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.63.2...v3.64.0)

---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-02 05:46:15 +00:00
Oliver Klee
498dbdda3a
[TASK] Run composer-unused as part of ci:static (#1440) 2024-08-30 08:58:33 +02:00
dependabot[bot]
0b20fd5fdb
[TASK] Update ssch/typo3-rector requirement from ^2.6.4 to ^2.6.5 (#1442)
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.4...v2.6.5)

---
updated-dependencies:
- dependency-name: ssch/typo3-rector
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-30 05:15:39 +00:00
dependabot[bot]
e5194cd536
[TASK] Update friendsofphp/php-cs-fixer requirement (#1441)
Updates the requirements on [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) to permit the latest version.
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.63.1...v3.63.2)

---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-29 05:38:12 +00:00
dependabot[bot]
da1353eeb2
[TASK] Update phpstan/phpstan requirement from ^1.11.11 to ^1.12.0 (#1439)
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/1.12.x/CHANGELOG.md)
- [Commits](https://github.com/phpstan/phpstan/compare/1.11.11...1.12.0)

---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-28 05:26:25 +00:00
dependabot[bot]
c52530c9c3
[TASK] Update saschaegerer/phpstan-typo3 requirement (#1438)
Updates the requirements on [saschaegerer/phpstan-typo3](https://github.com/sascha-egerer/phpstan-typo3) to permit the latest version.
- [Release notes](https://github.com/sascha-egerer/phpstan-typo3/releases)
- [Commits](https://github.com/sascha-egerer/phpstan-typo3/compare/1.10.1...1.10.2)

---
updated-dependencies:
- dependency-name: saschaegerer/phpstan-typo3
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-27 06:07:56 +00:00
dependabot[bot]
21cede65f0
[TASK] Update friendsofphp/php-cs-fixer requirement (#1437)
Updates the requirements on [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) to permit the latest version.
- [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases)
- [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.62.0...v3.63.1)

---
updated-dependencies:
- dependency-name: friendsofphp/php-cs-fixer
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-26 14:20:23 +00:00
dependabot[bot]
02bc8933b2
[TASK] Update phpstan/extension-installer requirement (#1436)
Updates the requirements on [phpstan/extension-installer](https://github.com/phpstan/extension-installer) to permit the latest version.
- [Release notes](https://github.com/phpstan/extension-installer/releases)
- [Commits](https://github.com/phpstan/extension-installer/compare/1.4.1...1.4.2)

---
updated-dependencies:
- dependency-name: phpstan/extension-installer
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-26 14:19:37 +00:00
Oliver Klee
9005c3cb9a
[TASK] Streamline the coverage folders (#1432) 2024-08-23 19:26:32 +02:00
Oliver Klee
920b2ca957
[TASK] Switch code coverage from PCOV to Xdebug (#1429)
PCOV is no longer maintainted, and nowadays Xdebug is fast enough.
2024-08-23 14:29:27 +02:00
68 changed files with 698 additions and 361 deletions

2
.gitattributes vendored
View file

@ -8,7 +8,6 @@
/.npmrc export-ignore
/.nvmrc export-ignore
/.php-cs-fixer.php export-ignore
/.phpstorm.meta.php export-ignore
/.prettierrc.js export-ignore
/Build/ export-ignore
/Configuration/FunctionalTests.xml export-ignore
@ -19,7 +18,6 @@
/package-lock.json export-ignore
/package.json export-ignore
/phive.xml export-ignore
/phpcs.xml export-ignore
/phpstan-baseline.neon export-ignore
/phpstan.neon export-ignore
/rector.php export-ignore

17
.github/ISSUE_TEMPLATE/feature.md vendored Normal file
View file

@ -0,0 +1,17 @@
---
name: Feature
about: If you want a new feature
title: "Feature: Please add a speaking title"
labels: 'feature'
assignees: ''
---
## Goal
What would you like to achieve with this feature? Maybe in form of a User Story.
## Acceptance Criteria
- [ ]
## Additional Information
Anything else that would be helpful to know to implement this feature.

17
.github/ISSUE_TEMPLATE/task.md vendored Normal file
View file

@ -0,0 +1,17 @@
---
name: Task
about: If you want a new task
title: "Task: Please add a speaking title"
labels: 'task'
assignees: ''
---
## Goal
What would you like to achieve with this task? Maybe in form of a User Story.
## Acceptance Criteria
- [ ]
## Additional Information
Anything else that would be helpful to know to complete this task.

View file

@ -83,6 +83,7 @@ jobs:
- "json:lint"
- "php:cs-fixer"
- "php:mess"
- "php:rector"
- "php:sniff"
- "php:stan"
- "typoscript:lint"
@ -326,6 +327,7 @@ jobs:
documentation:
name: Documentation
runs-on: ubuntu-24.04
timeout-minutes: 2
steps:
- name: Checkout
uses: actions/checkout@v4

View file

@ -29,8 +29,7 @@ jobs:
ini-file: development
tools: composer:v2, phive
extensions: mysqli
coverage: pcov
ini-values: pcov.directory=Classes
coverage: xdebug
- name: "Install development tools"
run: phive --no-progress install --trust-gpg-keys D8406D0D82947747293778314AA394086372C20A
- name: "Show Composer version"
@ -64,7 +63,7 @@ jobs:
- name: "Run unit tests with coverage"
run: composer ci:coverage:unit
- name: "Show generated coverage files"
run: "ls -lahR .Build/coverage/"
run: "ls -lahR build/coverage/"
- name: "Run functional tests with coverage"
run: |
export typo3DatabaseName="$DB_DATABASE";
@ -73,15 +72,18 @@ jobs:
export typo3DatabasePassword="$DB_PASSWORD";
composer ci:coverage:functional
- name: "Show generated coverage files"
run: "ls -lahR .Build/coverage/"
run: "ls -lahR build/coverage/"
- name: "Merge coverage results"
run: composer ci:coverage:merge
- name: "Show merged coverage files"
run: "ls -lahR ./.Build/logs/"
- name: "Show combined coverage files"
run: "ls -lahR build/logs/"
- name: "Upload coverage results to Coveralls"
uses: coverallsapp/github-action@v2
env:
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./.Build/bin/php-coveralls --coverage_clover=./.Build/logs/clover.xml --json_path=./.Build/logs/coveralls-upload.json -v
github-token: ${{ secrets.GITHUB_TOKEN }}
# Note: This is the only path that the Coveralls GitHub Action supports.
# So we cannot use something like .Build/coverage/clover.xml here.
file: build/logs/clover.xml
strategy:
fail-fast: false
matrix:

2
.gitignore vendored
View file

@ -5,7 +5,7 @@
/.php-cs-fixer.cache
/.phpunit.result.cache
/Documentation-GENERATED-temp/
/clover.xml
/build
/composer.lock
/generate-documentation.sh
/nbproject

View file

@ -7,8 +7,9 @@ stages:
- test
include:
- '/.gitlab/pipeline/jobs/.default.yml'
- '/.gitlab/pipeline/jobs/.composer-update.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'
@ -19,21 +20,22 @@ 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/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'
@ -41,14 +43,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'

187
.gitlab/pipeline/ci/php.ini Normal file
View file

@ -0,0 +1,187 @@
[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=
[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

View file

@ -0,0 +1,3 @@
.composer-update:
before_script:
- composer update --no-progress

View file

@ -1,4 +1,8 @@
.default:
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
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"
script:
- cp $CI_PROJECT_DIR/.gitlab/pipeline/ci/php.ini /usr/local/etc/php/php.ini; # copy php.ini into image

View file

@ -1,6 +1,6 @@
func-php7.4-v11-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
image: ghcr.io/typo3/core-testing-php74:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php7.4-v11-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
image: ghcr.io/typo3/core-testing-php74:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.0-v11-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
image: ghcr.io/typo3/core-testing-php80:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.0-v11-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
image: ghcr.io/typo3/core-testing-php80:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.1-v11-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
image: ghcr.io/typo3/core-testing-php81:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.1-v11-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
image: ghcr.io/typo3/core-testing-php81:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.1-v11-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
image: ghcr.io/typo3/core-testing-php81:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.1-v11-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
image: ghcr.io/typo3/core-testing-php81:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.2-v11-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
image: ghcr.io/typo3/core-testing-php82:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.2-v11-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
image: ghcr.io/typo3/core-testing-php82:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.2-v11-highest:
func-php8.2-v12-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
image: ghcr.io/typo3/core-testing-php82:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.2-v12-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
image: ghcr.io/typo3/core-testing-php82:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.3-v11-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
image: ghcr.io/typo3/core-testing-php83:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.3-v11-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
image: ghcr.io/typo3/core-testing-php83:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.3-v11-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
image: ghcr.io/typo3/core-testing-php83:latest
services:
- mariadb:10
stage: test

View file

@ -1,6 +1,6 @@
func-php8.3-v12-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
image: ghcr.io/typo3/core-testing-php83:latest
services:
- mariadb:10
stage: test

View file

@ -1,5 +1,6 @@
php-lint-php7.4:
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
extends: .composer-update
image: ghcr.io/typo3/core-testing-php74:latest
stage: lint
needs: [ ]
script:

View file

@ -1,5 +1,6 @@
php-lint-php8.0:
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
extends: .composer-update
image: ghcr.io/typo3/core-testing-php80:latest
stage: lint
needs: [ ]
script:

View file

@ -1,5 +1,6 @@
php-lint-php8.1:
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
extends: .composer-update
image: ghcr.io/typo3/core-testing-php81:latest
stage: lint
needs: [ ]
script:

View file

@ -1,5 +1,6 @@
php-lint-php8.2:
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
extends: .composer-update
image: ghcr.io/typo3/core-testing-php82:latest
stage: lint
needs: [ ]
script:

View file

@ -1,5 +1,6 @@
php-lint-php8.3:
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
extends: .composer-update
image: ghcr.io/typo3/core-testing-php83:latest
stage: lint
needs: [ ]
script:

View file

@ -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

View file

@ -1,6 +1,6 @@
unit-php7.4-v11-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
image: ghcr.io/typo3/core-testing-php74:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php7.4-v11-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
image: ghcr.io/typo3/core-testing-php74:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.0-v11-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
image: ghcr.io/typo3/core-testing-php80:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.0-v11-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
image: ghcr.io/typo3/core-testing-php80:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.1-v11-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
image: ghcr.io/typo3/core-testing-php81:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.1-v11-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
image: ghcr.io/typo3/core-testing-php81:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.1-v12-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
image: ghcr.io/typo3/core-testing-php81:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.1-v12-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
image: ghcr.io/typo3/core-testing-php81:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.2-v11-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
image: ghcr.io/typo3/core-testing-php82:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.2-v11-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
image: ghcr.io/typo3/core-testing-php82:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.2-v12-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
image: ghcr.io/typo3/core-testing-php82:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.2-v12-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
image: ghcr.io/typo3/core-testing-php82:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.3-v11-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
image: ghcr.io/typo3/core-testing-php83:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.3-v11-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
image: ghcr.io/typo3/core-testing-php83:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.3-v12-highest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
image: ghcr.io/typo3/core-testing-php83:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,6 +1,6 @@
unit-php8.3-v12-lowest:
extends: .default
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
image: ghcr.io/typo3/core-testing-php83:latest
stage: test
needs:
- build-composer-dependencies

View file

@ -1,168 +0,0 @@
<?php
declare(strict_types=1);
/**
* @see https://www.jetbrains.com/help/phpstorm/ide-advanced-metadata.html
*/
namespace PHPSTORM_META {
override(\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(0), type(0));
// TYPO3 testing framework
// The accesible mock will be of type `self` as well as `MockObject` and `AccessibleObjectInterface`.
override(
\TYPO3\TestingFramework\Core\BaseTestCase::getAccessibleMock(0),
map(
[
'' => '@|\\PHPUnit\\Framework\\MockObject\\MockObject'
. '|\\TYPO3\\TestingFramework\\Core\\AccessibleObjectInterface',
]
)
);
override(
\TYPO3\TestingFramework\Core\BaseTestCase::getAccessibleMockForAbstractClass(0),
map(
[
'' => '@|\\PHPUnit\\Framework\\MockObject\\MockObject'
. '|\\TYPO3\TestingFramework\\Core\\AccessibleObjectInterface',
]
)
);
// Contexts
// @see https://docs.typo3.org/c/typo3/cms-core/master/en-us/Changelog/9.4/Feature-85389-ContextAPIForConsistentDataHandling.html
expectedArguments(
\TYPO3\CMS\Core\Context\Context::getAspect(),
0,
'date',
'visibility',
'backend.user',
'frontend.user',
'workspace',
'language',
'typoscript'
);
override(\TYPO3\CMS\Core\Context\Context::getAspect(), map([
'date' => \TYPO3\CMS\Core\Context\DateTimeAspect::class,
'visibility' => \TYPO3\CMS\Core\Context\VisibilityAspect::class,
'backend.user' => \TYPO3\CMS\Core\Context\UserAspect::class,
'frontend.user' => \TYPO3\CMS\Core\Context\UserAspect::class,
'workspace' => \TYPO3\CMS\Core\Context\WorkspaceAspect::class,
'language' => \TYPO3\CMS\Core\Context\LanguageAspect::class,
'typoscript' => \TYPO3\CMS\Core\Context\TypoScriptAspect::class,
]));
expectedArguments(
\TYPO3\CMS\Core\Context\DateTimeAspect::get(),
0,
'timestamp',
'iso',
'timezone',
'full',
'accessTime'
);
expectedArguments(
\TYPO3\CMS\Core\Context\VisibilityAspect::get(),
0,
'includeHiddenPages',
'includeHiddenContent',
'includeDeletedRecords'
);
expectedArguments(
\TYPO3\CMS\Core\Context\UserAspect::get(),
0,
'id',
'username',
'isLoggedIn',
'isAdmin',
'groupIds',
'groupNames'
);
expectedArguments(
\TYPO3\CMS\Core\Context\WorkspaceAspect::get(),
0,
'id',
'isLive',
'isOffline'
);
expectedArguments(
\TYPO3\CMS\Core\Context\LanguageAspect::get(),
0,
'id',
'contentId',
'fallbackChain',
'overlayType',
'legacyLanguageMode',
'legacyOverlayType'
);
expectedArguments(
\TYPO3\CMS\Core\Context\TypoScriptAspect::get(),
0,
'forcedTemplateParsing'
);
expectedArguments(
\Psr\Http\Message\ServerRequestInterface::getAttribute(),
0,
'backend.user',
'frontend.user',
'normalizedParams',
'site',
'language',
'routing',
'module',
'moduleData'
);
override(\Psr\Http\Message\ServerRequestInterface::getAttribute(), map([
'backend.user' => \TYPO3\CMS\Backend\FrontendBackendUserAuthentication::class,
'frontend.user' => \TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication::class,
'normalizedParams' => \TYPO3\CMS\Core\Http\NormalizedParams::class,
'site' => \TYPO3\CMS\Core\Site\Entity\SiteInterface::class,
'language' => \TYPO3\CMS\Core\Site\Entity\SiteLanguage::class,
'routing' => '\TYPO3\CMS\Core\Routing\SiteRouteResult|\TYPO3\CMS\Core\Routing\PageArguments',
'module' => \TYPO3\CMS\Backend\Module\ModuleInterface::class,
'moduleData' => \TYPO3\CMS\Backend\Module\ModuleData::class,
]));
expectedArguments(
\TYPO3\CMS\Core\Http\ServerRequest::getAttribute(),
0,
'backend.user',
'frontend.user',
'normalizedParams',
'site',
'language',
'routing',
'module',
'moduleData'
);
override(\TYPO3\CMS\Core\Http\ServerRequest::getAttribute(), map([
'backend.user' => \TYPO3\CMS\Backend\FrontendBackendUserAuthentication::class,
'frontend.user' => \TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication::class,
'normalizedParams' => \TYPO3\CMS\Core\Http\NormalizedParams::class,
'site' => \TYPO3\CMS\Core\Site\Entity\SiteInterface::class,
'language' => \TYPO3\CMS\Core\Site\Entity\SiteLanguage::class,
'routing' => '\TYPO3\CMS\Core\Routing\SiteRouteResult|\TYPO3\CMS\Core\Routing\PageArguments',
'module' => \TYPO3\CMS\Backend\Module\ModuleInterface::class,
'moduleData' => \TYPO3\CMS\Backend\Module\ModuleData::class,
]));
override(\TYPO3\CMS\Core\Routing\SiteMatcher::matchRequest(), type(
\TYPO3\CMS\Core\Routing\SiteRouteResult::class,
\TYPO3\CMS\Core\Routing\RouteResultInterface::class
)
);
override(\TYPO3\CMS\Core\Routing\PageRouter::matchRequest(), type(
\TYPO3\CMS\Core\Routing\PageArguments::class,
\TYPO3\CMS\Core\Routing\RouteResultInterface::class
));
}

View file

@ -9,6 +9,7 @@ This project adheres to [Semantic Versioning](https://semver.org/).
- Add support for PostgreSQL 16 (#1271)
### Changed
- Move php sniff configuration to Build dir (#1357)
- Move xliff configuration to Build xliff dir (#1356)
- Move tests configuration to Build dir (#1352)
- Stop storing development tool PHARs in the repository (#1277)

View file

@ -0,0 +1,86 @@
<?php
declare(strict_types=1);
namespace TTN\Tea\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\ReferenceIndex;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/*
* Command to create test data for the tea extension.
*/
final class CreateTestDataCommand extends Command
{
/**
* @var list<array{title: non-empty-string, description: non-empty-string, sys_language_uid: int<0, max>}>
*/
protected array $teaData = [
[
'title' => 'Darjeeling',
'description' => 'I love that tea!',
'sys_language_uid' => 0,
],
[
'title' => 'Earl Grey',
'description' => 'A nice tea!',
'sys_language_uid' => 0,
],
];
protected function configure(): void
{
$this
->setHelp('Create test data for the tea extension in an already existing page (sysfolder).')
->addArgument(
'pageUid',
InputArgument::REQUIRED,
'Existing sysfolder page id.'
)
->addOption(
'delete-data-before',
'd',
InputOption::VALUE_NONE,
'Delete all tea data in the defined pid before creating new data.'
);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$pageUid = $input->getArgument('pageUid') ?? 0;
\assert(\is_int($pageUid));
$deleteDataBefore = $input->getOption('delete-data-before') ?? false;
\assert(\is_bool($deleteDataBefore));
$table = 'tx_tea_domain_model_tea';
$connectionForTable = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($table);
if ($deleteDataBefore) {
$query = $connectionForTable;
$query->delete($table, ['pid' => $pageUid], [Connection::PARAM_INT]);
$output->writeln(sprintf('Existing data in page %s deleted.', $pageUid));
}
$query = $connectionForTable;
foreach ($this->teaData as $item) {
$item = ['pid' => $pageUid, 'title' => $item['title'], 'description' => $item['description']];
$query->insert(
$table,
$item
);
}
$output->writeln(sprintf('Test data in page %s created.', $pageUid));
$referenceIndex = GeneralUtility::makeInstance(ReferenceIndex::class);
$referenceIndex->updateIndex(false);
$output->writeln('Reference index updated.');
return Command::SUCCESS;
}
}

View file

@ -4,6 +4,8 @@ declare(strict_types=1);
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use TTN\Tea\Command\CreateTestDataCommand;
return static function (ContainerConfigurator $containerConfigurator) {
$services = $containerConfigurator->services()
->defaults()
@ -12,4 +14,13 @@ return static function (ContainerConfigurator $containerConfigurator) {
$services->load('TTN\\Tea\\', '../Classes/*')
->exclude('../Classes/Domain/Model/*');
$services->set(CreateTestDataCommand::class)
->tag(
'console.command',
[
'command' => 'tea:createtestdata',
'description' => 'Create test data in existing sysfolder',
]
);
};

View file

@ -0,0 +1,28 @@
.. include:: /Includes.rst.txt
.. _command-controller:
==================
Command Controller
==================
The "tea" extension comes with a CommandController that can be used for the
automatic creation of test data. It also serves to illustrate how data can be
created in the database using a command controller.
You must set a page id as argument. Therefore it's necessary to create an
sysfolder before.
You can add option `-d` to delete already existing data.
.. code-block:: bash
vendor/bin/typo3 tea:createtestdata 3
.. seealso::
For further details to Console Commands read the
:ref:`Creating a basic command <t3coreapi:console-command-tutorial-create>`
tutorial.

View file

@ -44,9 +44,10 @@ continuous integration.
Introduction
PHPVersionSupport
TestingFramework
ReleaseBranchingStrategy
Environment
DependencyManager
CommandController
Running
ContinuousIntegration
Documentation

View file

@ -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.

View file

@ -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 <https://github.com/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 <https://github.com/TYPO3/testing-framework>`__
- which supports only one TYPO3 LTS version at a time - will work just fine.

View file

@ -0,0 +1,121 @@
<?php
declare(strict_types=1);
namespace TTN\Tea\Tests\Functional\Command;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Tester\CommandTester;
use TTN\Tea\Command\CreateTestDataCommand;
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
/**
* @covers \TTN\Tea\Command\CreateTestDataCommand
*/
class CreateTestDataCommandTest extends FunctionalTestCase
{
private const COMMAND_NAME = 'tea:createtestdata';
protected array $testExtensionsToLoad = ['ttn/tea'];
private CreateTestDataCommand $subject;
private CommandTester $commandTester;
protected function setUp(): void
{
parent::setUp();
$this->importCSVDataSet(__DIR__ . '/Fixtures/Database/Pages.csv');
$this->subject = new CreateTestDataCommand(self::COMMAND_NAME);
$application = new Application();
$application->add($this->subject);
$command = $application->find('tea:createtestdata');
$this->commandTester = new CommandTester($command);
}
/**
* @test
*/
public function isConsoleCommand(): void
{
self::assertInstanceOf(Command::class, $this->subject);
}
/**
* @test
*/
public function hasDescription(): void
{
$expected = 'Create test data for the tea extension in an already existing page (sysfolder).';
self::assertSame($expected, $this->subject->getHelp());
}
/**
* @test
*/
public function hasHelpText(): void
{
$expected = 'Create test data for the tea extension in an already existing page (sysfolder).';
self::assertSame($expected, $this->subject->getHelp());
}
/**
* @test
*/
public function runReturnsSuccessStatus(): void
{
$result = $this->commandTester->execute(
[
'pageUid' => '1',
],
);
self::assertSame(Command::SUCCESS, $result);
}
/**
* @test
*/
public function createsTestData(): void
{
$this->commandTester->execute([
'pageUid' => '1',
]);
self::assertCSVDataSet(__DIR__ . '/Fixtures/Database/Teas.csv');
}
/**
* @test
*/
public function deletesExistingDataOnGivenPidBeforeCreatingNewData(): void
{
$this->importCSVDataSet(__DIR__ . '/Fixtures/Database/ExistingTeas.csv');
$this->commandTester->execute(
[
'pageUid' => '1',
'--delete-data-before' => true,
]
);
self::assertCSVDataSet(__DIR__ . '/Fixtures/Database/TeasAfterDelete.csv');
}
/**
* @test
*/
public function doesNotDeleteDataOnOtherPid(): void
{
$this->importCSVDataSet(__DIR__ . '/Fixtures/Database/OtherExistingTeas.csv');
$this->commandTester->execute(
[
'pageUid' => '1',
'--delete-data-before' => true,
]
);
self::assertCSVDataSet(__DIR__ . '/Fixtures/Database/TeasAfterDeleteOtherExistingTeas.csv');
}
}

View file

@ -0,0 +1,4 @@
"tx_tea_domain_model_tea"
,"uid","pid","title","description","deleted"
,1,1,"Darjeeling","Which already existed in the system",0
,2,1,"Earl Grey","Which already existed in the system",0
Can't render this file because it has a wrong number of fields in line 2.

View file

@ -0,0 +1,6 @@
"tx_tea_domain_model_tea"
,"uid","pid","title","description","deleted"
,3,1,"Darjeeling","Exists and should be deleted","0"
,4,1,"Earl Grey","Exists and should be deleted","0"
,1,2,"Darjeeling","Which already existed in the system",0
,2,2,"Earl Grey","Which already existed in the system",0
Can't render this file because it has a wrong number of fields in line 2.

View file

@ -0,0 +1,4 @@
"pages",,,,,,,,,
,"uid","pid","sorting","deleted","t3_origuid","title",,,
,1,0,256,0,0,"Tea data",,,
,2,0,512,0,0,"Other tea data",,,
1 pages
2 uid pid sorting deleted t3_origuid title
3 1 0 256 0 0 Tea data
4 2 0 512 0 0 Other tea data

View file

@ -0,0 +1,4 @@
"tx_tea_domain_model_tea"
,"uid","pid","title","description","deleted"
,1,1,"Darjeeling","I love that tea!",0
,2,1,"Earl Grey","A nice tea!",0
Can't render this file because it has a wrong number of fields in line 2.

View file

@ -0,0 +1,4 @@
"tx_tea_domain_model_tea"
,"pid","title","description","deleted"
,1,"Darjeeling","I love that tea!",0
,1,"Earl Grey","A nice tea!",0
Can't render this file because it has a wrong number of fields in line 2.

View file

@ -0,0 +1,6 @@
"tx_tea_domain_model_tea"
,"pid","title","description","deleted"
,1,"Darjeeling","I love that tea!",0
,1,"Earl Grey","A nice tea!",0
,2,"Darjeeling","Which already existed in the system",0
,2,"Earl Grey","Which already existed in the system",0
Can't render this file because it has a wrong number of fields in line 2.

View file

@ -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
*/

View file

@ -1,39 +0,0 @@
<?php
declare(strict_types=1);
namespace TTN\Tea\Tests\Unit\Domain\Repository;
use TTN\Tea\Domain\Repository\TeaRepository;
use TYPO3\CMS\Extbase\Object\ObjectManagerInterface;
use TYPO3\CMS\Extbase\Persistence\Repository;
use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
/**
* @covers \TTN\Tea\Domain\Repository\TeaRepository
*/
final class TeaRepositoryTest extends UnitTestCase
{
private TeaRepository $subject;
protected function setUp(): void
{
parent::setUp();
if (\interface_exists(ObjectManagerInterface::class)) {
$objectManagerStub = $this->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);
}
}

View file

@ -47,32 +47,31 @@
"typo3/cms-frontend": "^11.5.4 || ^12.4.2"
},
"require-dev": {
"ergebnis/composer-normalize": "^2.43.0",
"friendsofphp/php-cs-fixer": "^3.62.0",
"helmich/typo3-typoscript-lint": "^3.1.1",
"icanhazstring/composer-unused": "^0.8.11",
"php-coveralls/php-coveralls": "^2.7.0",
"php-parallel-lint/php-parallel-lint": "^1.4",
"phpmd/phpmd": "^2.15.0",
"phpstan/extension-installer": "^1.4.1",
"phpstan/phpstan": "^1.11.11",
"phpstan/phpstan-phpunit": "^1.4.0",
"phpstan/phpstan-strict-rules": "^1.6.0",
"phpunit/phpunit": "^9.6.20",
"saschaegerer/phpstan-typo3": "^1.10.1",
"seld/jsonlint": "^1.11.0",
"spaze/phpstan-disallowed-calls": "^3.4",
"squizlabs/php_codesniffer": "^3.10.2",
"ssch/typo3-rector": "^2.6.4",
"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",
"tomasvotruba/cognitive-complexity": "^0.2.3",
"tomasvotruba/type-coverage": "^0.3.1",
"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",
"php-parallel-lint/php-parallel-lint": "1.4.0",
"phpmd/phpmd": "2.15.0",
"phpstan/extension-installer": "1.4.3",
"phpstan/phpstan": "1.12.7",
"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.5.0",
"squizlabs/php_codesniffer": "3.10.3",
"ssch/typo3-rector": "2.10.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",
"symfony/yaml": "^5.4.44 || ^6.4.12 || ^7.1.5",
"tomasvotruba/cognitive-complexity": "0.2.3",
"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.0.5",
"typo3/coding-standards": "0.6.1 || 0.8.0",
"typo3/testing-framework": "7.1.0",
"webmozart/assert": "^1.11.0"
},
"replace": {
@ -128,15 +127,15 @@
"ci:coverage:functional": [
"@ci:tests:create-directories",
"@coverage:create-directories",
"phpunit -c Build/phpunit/FunctionalTests.xml --whitelist Classes --coverage-php=.Build/coverage/functional.cov Tests/Functional"
"phpunit -c Build/phpunit/FunctionalTests.xml --whitelist Classes --coverage-php=build/coverage/functional.cov Tests/Functional"
],
"ci:coverage:merge": [
"@coverage:create-directories",
"@php tools/phpcov merge --clover=./.Build/logs/clover.xml ./.Build/coverage/"
"@php tools/phpcov merge --clover=build/logs/clover.xml build/coverage/"
],
"ci:coverage:unit": [
"@coverage:create-directories",
"phpunit -c Build/phpunit/UnitTests.xml --whitelist Classes --coverage-php=.Build/coverage/unit.cov Tests/Unit"
"phpunit -c Build/phpunit/UnitTests.xml --whitelist Classes --coverage-php=build/coverage/unit.cov Tests/Unit"
],
"ci:json:lint": "find . ! -path '*/.cache/*' ! -path '*/.Build/*' ! -path '*/node_modules/*' -name '*.json' | xargs -r php .Build/bin/jsonlint -q",
"ci:php": [
@ -148,15 +147,18 @@
"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:sniff": "phpcs Classes Configuration Tests",
"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": [
"@ci:composer:normalize",
"@ci:composer:unused",
"@ci:json:lint",
"@ci:php:cs-fixer",
"@ci:php:lint",
"@ci:php:sniff",
"@ci:php:rector",
"@ci:php:stan",
"@ci:php:cs-fixer",
"@ci:php:sniff",
"@ci:typoscript:lint",
"@ci:xliff:lint",
"@ci:yaml:lint"
@ -170,15 +172,17 @@
"ci:typoscript:lint": "typoscript-lint -c Configuration/TsLint.yml --ansi -n --fail-on-warnings -vvv Configuration/TypoScript",
"ci:xliff:lint": "php Build/xliff/xliff-lint lint:xliff Resources/Private/Language",
"ci:yaml:lint": "find . ! -path '*.Build/*' ! -path '*node_modules/*' \\( -name '*.yaml' -o -name '*.yml' \\) | xargs -r php ./.Build/bin/yaml-lint",
"coverage:create-directories": "mkdir -p .Build/logs .Build/coverage",
"coverage:create-directories": "mkdir -p build/coverage build/logs",
"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:sniff": "phpcbf Classes Configuration Tests",
"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": [
"rm -rf .Build",
@ -197,12 +201,9 @@
"rm .nvmrc",
"rm .php-cs-fixer.php",
"rm .prettierrc.js",
"rm Build/phpunit/FunctionalTests.xml",
"rm Build/phpunit/UnitTests.xml",
"rm package-lock.json",
"rm package.json",
"rm phive.xml",
"rm phpcs.xml",
"rm phpstan-baseline.neon",
"rm phpstan.neon",
"rm rector.php",
@ -221,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).",
@ -235,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."

View file

@ -10,8 +10,8 @@
"version": "1.0.0",
"license": "GPL-2.0-or-later",
"engines": {
"node": "^22.5.0",
"npm": "^10.8.0"
"node": "^20.17.0 || ^22.5.1",
"npm": "^10.8.2"
},
"scripts": {
"ci:lint:js": "eslint 'Resources/Public/**/*.js'",