{ "name": "ttn/tea", "type": "typo3-cms-extension", "description": "TYPO3 example extension for unit testing and best practices", "keywords": [ "typo3", "example", "extension", "tdd", "phpunit", "unit testing", "best practices" ], "license": "GPL-2.0-or-later", "authors": [ { "name": "Oliver Klee", "email": "typo3-coding@oliverklee.de", "homepage": "https://www.oliverklee.de", "role": "developer" } ], "require": { "php": "~7.2.0 || ~7.3.0 || ~7.4.0", "typo3/cms-core": "^9.5 || ^10.4 || ^11.4", "typo3/cms-extbase": "^9.5 || ^10.4 || ^11.4", "typo3/cms-fluid": "^9.5 || ^10.4 || ^11.4", "typo3/cms-frontend": "^9.5 || ^10.4 || ^11.4" }, "replace": { "typo3-ter/tea": "self.version" }, "conflict": { "doctrine/dbal": "2.13.1", "typo3/class-alias-loader": "< 1.1.0" }, "require-dev": { "codeception/codeception": "^4.1.22", "ergebnis/composer-normalize": "^2.15.0", "friendsofphp/php-cs-fixer": "^2.19.2", "helhum/typo3-composer-setup": "^0.5.7", "helmich/typo3-typoscript-lint": "^2.5.2", "jangregor/phpstan-prophecy": "^0.8.1", "nimut/testing-framework": "^5.2.1", "phpstan/extension-installer": "^1.1.0", "phpstan/phpstan": "^0.12.98", "phpstan/phpstan-phpunit": "^0.12.22", "phpunit/phpunit": "^7.5.20", "saschaegerer/phpstan-typo3": "^0.13.3", "seld/jsonlint": "^1.8.3", "squizlabs/php_codesniffer": "^3.6.0", "symfony/yaml": "^4.4.29 || ^5.3.6", "typo3/cms-fluid-styled-content": "^9.5 || ^10.4 || ^11.4" }, "config": { "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", "ignore-as-root": false, "web-dir": ".Build/public" } }, "autoload": { "psr-4": { "TTN\\Tea\\": "Classes/" } }, "autoload-dev": { "psr-4": { "TTN\\Tea\\Tests\\": "Tests/" } }, "prefer-stable": true, "scripts": { "post-autoload-dump": [ "@link-extension" ], "ci": [ "@ci:static" ], "ci:composer:normalize": "@composer normalize --dry-run", "ci:dynamic": [ "@ci:tests" ], "ci:json:lint": "find . ! -path '*.Build/*' ! -path '*Resources/Private/node_modules/*' -name '*.json' | xargs 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 Configuration Tests", "ci:php:cs-fixer": "php-cs-fixer fix --config .php_cs.php -v --dry-run --using-cache false --diff --diff-format=udiff", "ci:php:lint": "find *.php Classes Configuration Tests -name '*.php' -print0 | xargs -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/nimut/testing-framework/res/Configuration/FunctionalTests.xml {}';", "ci:tests:unit": ".Build/vendor/bin/phpunit -c .Build/vendor/nimut/testing-framework/res/Configuration/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 '*Resources/Private/node_modules/*' -name '*.yml' | xargs php ./.Build/vendor/bin/yaml-lint", "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.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.php", "rm Resources/Private/.eslintignore", "rm Resources/Private/.eslintrc.json", "rm Resources/Private/.prettierrc.js", "rm Resources/Private/package.json", "rm Resources/Private/stylelint.config.js", "rm codeception.yml", "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: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.", "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." }, "support": { "issues": "https://github.com/TYPO3-Documentation/tea/issues", "source": "https://github.com/TYPO3-Documentation/tea" } }