mirror of
https://github.com/FriendsOfTYPO3/tea.git
synced 2024-11-15 17:16:12 +01:00
41b44c28a4
typo3/testing-framework provides some template files as kickstart for project and extension based testing. They are properly marked to be copied and not used directly from the package. The reason for this recommendation is, that project should make adjustments to theire concrete setup, like coverage settings and so on. This change clonses the corresponding template files from the testing-framework to folders in this extension, adjusts needed paths and ensure testing is still working. With that this best practice example follows the recommendation and best-practice for typo3/testing-framework usage. Tasks * provided cloned unit- and function test configuration and bootstrap files in `Build/phpunit/` * updated cloned phpunit configuration files to be phpunit v9 compatible, removing old coverage tag as this is done by cli options in this repository anyway * add proper xml namespacing to cloned phpunit configurations * adjustes config paths in unit and functional testing calls provided as composer scripts * adjusted phpunit configuration files in documentation Resolves #533
236 lines
8.2 KiB
JSON
236 lines
8.2 KiB
JSON
{
|
|
"name": "ttn/tea",
|
|
"description": "TYPO3 example extension for unit testing and best practices",
|
|
"license": "GPL-2.0-or-later",
|
|
"type": "typo3-cms-extension",
|
|
"keywords": [
|
|
"typo3",
|
|
"example",
|
|
"extension",
|
|
"tdd",
|
|
"phpunit",
|
|
"unit testing",
|
|
"best practices"
|
|
],
|
|
"authors": [
|
|
{
|
|
"name": "Oliver Klee",
|
|
"email": "typo3-coding@oliverklee.de",
|
|
"homepage": "https://www.oliverklee.de",
|
|
"role": "developer"
|
|
}
|
|
],
|
|
"homepage": "https://extensions.typo3.org/extension/tea/",
|
|
"support": {
|
|
"issues": "https://github.com/TYPO3-Documentation/tea/issues",
|
|
"source": "https://github.com/TYPO3-Documentation/tea",
|
|
"docs": "https://docs.typo3.org/p/ttn/tea/main/en-us/"
|
|
},
|
|
"require": {
|
|
"php": "~7.4.0 || ~8.0.0 || ~8.1.0",
|
|
"psr/http-message": "^1.0.1",
|
|
"typo3/cms-core": "^11.5.4 || ^12.0",
|
|
"typo3/cms-extbase": "^11.5.4 || ^12.0",
|
|
"typo3/cms-fluid": "^11.5.4 || ^12.0",
|
|
"typo3/cms-frontend": "^11.5.4 || ^12.0"
|
|
},
|
|
"require-dev": {
|
|
"doctrine/dbal": "^2.13.8 || ^3.3.7",
|
|
"ergebnis/composer-normalize": "^2.28.3",
|
|
"friendsofphp/php-cs-fixer": "^3.12.0",
|
|
"helmich/typo3-typoscript-lint": "lwolf-php81-support-dev",
|
|
"jangregor/phpstan-prophecy": "^1.0.0",
|
|
"php-coveralls/php-coveralls": "^2.5.3",
|
|
"phpspec/prophecy": "^1.15.0",
|
|
"phpspec/prophecy-phpunit": "2.0.1",
|
|
"phpstan/extension-installer": "^1.1.0",
|
|
"phpstan/phpstan": "^1.8.9",
|
|
"phpstan/phpstan-phpunit": "^1.1.1",
|
|
"phpstan/phpstan-strict-rules": "^1.4.4",
|
|
"phpunit/phpunit": "^9.5.25",
|
|
"saschaegerer/phpstan-typo3": "12.0.x-dev",
|
|
"sbuerk/typo3-cmscomposerinstallers-testingframework-bridge": "^0.0.1",
|
|
"seld/jsonlint": "^1.9.0",
|
|
"squizlabs/php_codesniffer": "^3.7.1",
|
|
"symfony/yaml": "^5.4 || ^6.1",
|
|
"typo3/cms-fluid-styled-content": "^11.5.4 || ^12.0",
|
|
"typo3/coding-standards": "^0.5.5",
|
|
"typo3/testing-framework": "^7.0@dev"
|
|
},
|
|
"replace": {
|
|
"typo3-ter/tea": "self.version"
|
|
},
|
|
"conflict": {
|
|
"typo3/class-alias-loader": "< 1.1.0"
|
|
},
|
|
"repositories": {
|
|
"1_phpstan-typo3_fork": {
|
|
"type": "vcs",
|
|
"url": "https://github.com/linawolf/phpstan-typo3.git"
|
|
},
|
|
"2_typo3-typoscript-lint_fork": {
|
|
"type": "vcs",
|
|
"url": "https://github.com/linawolf/typo3-typoscript-lint.git"
|
|
}
|
|
},
|
|
"minimum-stability": "dev",
|
|
"prefer-stable": true,
|
|
"autoload": {
|
|
"psr-4": {
|
|
"TTN\\Tea\\": "Classes/"
|
|
}
|
|
},
|
|
"autoload-dev": {
|
|
"psr-4": {
|
|
"TTN\\Tea\\Tests\\": "Tests/"
|
|
}
|
|
},
|
|
"config": {
|
|
"allow-plugins": {
|
|
"ergebnis/composer-normalize": true,
|
|
"phpstan/extension-installer": true,
|
|
"sbuerk/typo3-cmscomposerinstallers-testingframework-bridge": true,
|
|
"typo3/class-alias-loader": true,
|
|
"typo3/cms-composer-installers": true
|
|
},
|
|
"preferred-install": {
|
|
"*": "dist"
|
|
},
|
|
"sort-packages": true,
|
|
"vendor-dir": ".Build/vendor"
|
|
},
|
|
"extra": {
|
|
"branch-alias": {
|
|
"dev-main": "2.0.x-dev"
|
|
},
|
|
"typo3/cms": {
|
|
"app-dir": ".Build",
|
|
"extension-key": "tea",
|
|
"web-dir": ".Build/public"
|
|
}
|
|
},
|
|
"scripts": {
|
|
"post-autoload-dump": [
|
|
"@link-extension"
|
|
],
|
|
"ci": [
|
|
"@ci:static"
|
|
],
|
|
"ci:composer:normalize": "@composer normalize --dry-run",
|
|
"ci:coverage": [
|
|
"@ci:coverage:unit",
|
|
"@ci:coverage:functional"
|
|
],
|
|
"ci:coverage:functional": [
|
|
"@coverage:create-directories",
|
|
".Build/vendor/bin/phpunit -c .Build/public/typo3conf/ext/tea/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/"
|
|
],
|
|
"ci:coverage:unit": [
|
|
"@coverage:create-directories",
|
|
".Build/vendor/bin/phpunit -c .Build/public/typo3conf/ext/tea/Build/phpunit/UnitTests.xml --whitelist Classes --coverage-php=.Build/coverage/unit.cov Tests/Unit"
|
|
],
|
|
"ci:dynamic": [
|
|
"@ci:tests"
|
|
],
|
|
"ci:json:lint": "find . ! -path '*.Build/*' ! -path '*node_modules/*' -name '*.json' | xargs -r php .Build/vendor/bin/jsonlint -q",
|
|
"ci:php": [
|
|
"@ci:php:copypaste",
|
|
"@ci:php:cs-fixer",
|
|
"@ci:php:lint",
|
|
"@ci:php:sniff",
|
|
"@ci:php:stan"
|
|
],
|
|
"ci:php:copypaste": "@php ./tools/phpcpd Classes",
|
|
"ci:php:cs-fixer": "php-cs-fixer fix --config .php-cs-fixer.php -v --dry-run --using-cache no --diff",
|
|
"ci:php:lint": "find .*.php *.php Classes Configuration Tests -name '*.php' -print0 | xargs -r -0 -n 1 -P 4 php -l",
|
|
"ci:php:sniff": "phpcs Classes Configuration Tests",
|
|
"ci:php:stan": "phpstan --no-progress",
|
|
"ci:static": [
|
|
"@ci:composer:normalize",
|
|
"@ci:json:lint",
|
|
"@ci:php:copypaste",
|
|
"@ci:php:cs-fixer",
|
|
"@ci:php:lint",
|
|
"@ci:php:sniff",
|
|
"@ci:php:stan",
|
|
"@ci:ts:lint",
|
|
"@ci:yaml:lint"
|
|
],
|
|
"ci:tests": [
|
|
"@ci:tests:unit",
|
|
"@ci:tests:functional"
|
|
],
|
|
"ci:tests:functional": "find 'Tests/Functional' -wholename '*Test.php' | parallel --gnu 'echo; echo \"Running functional test suite {}\"; .Build/vendor/bin/phpunit -c .Build/public/typo3conf/ext/tea/Build/phpunit/FunctionalTests.xml {}';",
|
|
"ci:tests:unit": ".Build/vendor/bin/phpunit -c .Build/public/typo3conf/ext/tea/Build/phpunit/UnitTests.xml Tests/Unit",
|
|
"ci:ts:lint": "typoscript-lint -c Configuration/TsLint.yml --ansi -n --fail-on-warnings -vvv Configuration/TypoScript",
|
|
"ci:yaml:lint": "find . ! -path '*.Build/*' ! -path '*node_modules/*' -regextype egrep -regex '.*.ya?ml$' | xargs -r php ./.Build/vendor/bin/yaml-lint",
|
|
"coverage:create-directories": "mkdir -p .Build/logs .Build/coverage",
|
|
"docs:generate": [
|
|
"docker run --rm t3docs/render-documentation show-shell-commands > tempfile.sh; echo 'dockrun_t3rd makehtml' >> tempfile.sh; bash tempfile.sh; rm tempfile.sh"
|
|
],
|
|
"fix:php": [
|
|
"@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",
|
|
"link-extension": [
|
|
"@php -r 'is_dir($extFolder=__DIR__.\"/.Build/public/typo3conf/ext/\") || mkdir($extFolder, 0777, true);'",
|
|
"@php -r 'file_exists($extFolder=__DIR__.\"/.Build/public/typo3conf/ext/tea\") || symlink(__DIR__,$extFolder);'"
|
|
],
|
|
"phpstan:baseline": ".Build/vendor/bin/phpstan --generate-baseline=phpstan-baseline.neon",
|
|
"prepare-release": [
|
|
"rm .gitignore",
|
|
"rm -rf .Build",
|
|
"rm -rf .ddev",
|
|
"rm -rf .github",
|
|
"rm -rf .gitlab",
|
|
"rm -rf Tests",
|
|
"rm -rf tools",
|
|
"rm .editorconfig",
|
|
"rm .gitattributes",
|
|
"rm .php-cs-fixer.php",
|
|
"rm .eslintignore",
|
|
"rm .eslintrc.json",
|
|
"rm .prettierrc.js",
|
|
"rm package.json",
|
|
"rm stylelint.config.js",
|
|
"rm phive.xml",
|
|
"rm phpstan-baseline.neon",
|
|
"rm phpstan.neon",
|
|
"rm phpcs.xml"
|
|
]
|
|
},
|
|
"scripts-descriptions": {
|
|
"ci": "Runs all dynamic and static code checks.",
|
|
"ci:composer:normalize": "Checks the composer.json.",
|
|
"ci:coverage:functional": "Generates the code coverage report for functional tests.",
|
|
"ci:coverage:merge": "Merges the code coverage reports for unit and functional tests.",
|
|
"ci:coverage:unit": "Generates the code coverage report for unit tests.",
|
|
"ci:dynamic": "Runs all PHPUnit tests (unit and functional).",
|
|
"ci:json:lint": "Lints the JSON files.",
|
|
"ci:php": "Runs all static checks for the PHP files.",
|
|
"ci:php:copypaste": "Checks for copy'n'pasted PHP code.",
|
|
"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: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).",
|
|
"ci:tests": "Runs all PHPUnit tests (unit and functional).",
|
|
"ci:tests:functional": "Runs the functional tests.",
|
|
"ci:tests:unit": "Runs the unit tests.",
|
|
"ci:ts:lint": "Lints the TypoScript files.",
|
|
"ci:yaml:lint": "Lints the YAML files.",
|
|
"coverage:create-directories": "Creates the directories needed for recording and merging the code coverage reports.",
|
|
"docs:generate": "Renders the extension ReST documentation.",
|
|
"fix:php": "Runs all fixers for the PHP code.",
|
|
"fix:php:cs": "Fixes the code style with PHP-CS-Fixer.",
|
|
"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."
|
|
}
|
|
}
|