{ "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/vendor/typo3/testing-framework/Resources/Core/Build/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/vendor/typo3/testing-framework/Resources/Core/Build/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/vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTests.xml {}';", "ci:tests:unit": ".Build/vendor/bin/phpunit -c .Build/vendor/typo3/testing-framework/Resources/Core/Build/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." } }