diff --git a/Build/Scripts/annotationChecker.php b/Build/Scripts/annotationChecker.php index 1cef01ac9ffe6ba250595dd1b583f1eff562668c..b5933e24f685a11b65c87badcb4e2e71604cf24a 100755 --- a/Build/Scripts/annotationChecker.php +++ b/Build/Scripts/annotationChecker.php @@ -1,5 +1,6 @@ #!/usr/bin/env php <?php + declare(strict_types=1); /* @@ -47,16 +48,12 @@ class NodeVisitor extends NodeVisitorAbstract $negativeLookaheadMatches = [ // Annotation tags 'Annotation', 'Attribute', 'Attributes', 'Required', 'Target', - // Widely used tags (but not existent in phpdoc) - 'fix', 'fixme', 'override', // PHPDocumentor 1 tags - 'abstract', 'code', 'deprec', 'endcode', 'exception', 'final', 'ingroup', 'magic', 'name', 'toc', 'tutorial', 'private', 'static', 'staticvar', 'staticVar', 'throw', + 'private', 'static', 'staticvar', 'staticVar', // PHPDocumentor 2 tags - 'api', 'author', 'category', 'copyright', 'deprecated', 'example', 'filesource', 'global', 'ignore', 'internal', 'license', 'link', 'method', 'package', 'param', 'property', 'property-read', 'property-write', 'return', 'see', 'since', 'source', 'subpackage', 'throws', 'todo', 'TODO', 'usedby', 'uses', 'var', 'version', - // PHPUnit tags - 'codeCoverageIgnore', 'codeCoverageIgnoreStart', 'codeCoverageIgnoreEnd', 'dataProvider', 'group', 'skip', 'depends', 'expectedException', 'before', 'requires', - // codeception tags - 'env', + 'author', 'category', 'copyright', 'deprecated', 'example', 'internal', 'license', 'link', 'param', 'property', 'return', 'see', 'since', 'throws', 'todo', 'TODO', 'var', 'version', + // PHPUnit & codeception tags + 'depends', 'requires', 'env', // PHPCheckStyle 'SuppressWarnings', 'noinspection', // Extbase related diff --git a/Build/Scripts/splitAcceptanceTests.php b/Build/Scripts/splitAcceptanceTests.php index 5c5d19979b400e8357aeefb8179e2c3e64861139..a936d96bc576a05283f9985a844b164b40a150f8 100755 --- a/Build/Scripts/splitAcceptanceTests.php +++ b/Build/Scripts/splitAcceptanceTests.php @@ -1,5 +1,6 @@ #!/usr/bin/env php <?php + declare(strict_types=1); /* @@ -15,7 +16,6 @@ declare(strict_types=1); * The TYPO3 project - inspiring people to share! */ -use PhpParser\Comment\Doc; use PhpParser\Node; use PhpParser\NodeTraverser; use PhpParser\NodeVisitor\NameResolver; @@ -188,12 +188,12 @@ class AcceptanceTestCaseVisitor extends NodeVisitorAbstract /** * @var array[] An array of arrays with test method names and optionally a data provider name */ - private $tests = []; + private array $tests = []; /** * @var string Fully qualified test class name */ - private $fqcn; + private string $fqcn; /** * Create a list of '@test' annotated methods in a test case @@ -215,24 +215,20 @@ class AcceptanceTestCaseVisitor extends NodeVisitorAbstract $node instanceof \PhpParser\Node\Stmt\ClassMethod // The method is public && $node->isPublic() - // The methods does not start with an "_" (eg. _before()) + // The method does not start with an "_" (eg. _before()) && $node->name->name[0] !== '_' ) { // Found a test $test = [ 'methodName' => $node->name->name, ]; - $docComment = $node->getDocComment(); - if ($docComment instanceof Doc) { - preg_match_all( - '/\s*\s@(?<annotations>[^\s.].*)\n/', - $docComment->getText(), - $matches - ); - foreach ($matches['annotations'] as $possibleDataProvider) { - // See if this test has a data provider attached - if (str_starts_with($possibleDataProvider, 'dataProvider')) { - $test['dataProvider'] = trim(ltrim($possibleDataProvider, 'dataProvider')); + foreach ($node->getAttrGroups() as $possibleDataProviderAttributeGroup) { + foreach ($possibleDataProviderAttributeGroup->attrs as $possibleDataProviderAttribute) { + // See if that method has the codeception DataProvider attribute attached, too. + $name = $possibleDataProviderAttribute->name->toCodeString(); + if ($name === '\\Codeception\\Attribute\\DataProvider') { + $dataProviderMethodName = $possibleDataProviderAttribute->args[0]->value->value; + $test['dataProvider'] = $dataProviderMethodName; } } } @@ -242,8 +238,6 @@ class AcceptanceTestCaseVisitor extends NodeVisitorAbstract /** * Return array of found tests and their data providers - * - * @return array */ public function getTests(): array { @@ -252,8 +246,6 @@ class AcceptanceTestCaseVisitor extends NodeVisitorAbstract /** * Return Fully qualified class test name - * - * @return string */ public function getFqcn(): string { diff --git a/typo3/sysext/core/Tests/Acceptance/Application/DbCheck/DbCheckModuleCest.php b/typo3/sysext/core/Tests/Acceptance/Application/DbCheck/DbCheckModuleCest.php index fd0c5447d465f667ba22101eda39aba06a4e2e69..cc6b733da5cdca11ea4cb7ff83c3c38766238cf8 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/DbCheck/DbCheckModuleCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/DbCheck/DbCheckModuleCest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Acceptance\Application\DbCheck; +use Codeception\Attribute\DataProvider; use Codeception\Example; use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\Remote\RemoteWebElement; @@ -71,9 +72,7 @@ final class DbCheckModuleCest ]; } - /** - * @dataProvider recordStatisticsDataProvider - */ + #[DataProvider('recordStatisticsDataProvider')] public function seeRecordStatistics(ApplicationTester $I, Example $testData): void { $this->goToPageAndSeeHeadline($I, 'Record Statistics', 'Records Statistics'); diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputDateCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputDateCest.php index 7893711b9166d016ee90a511985fb8c88a2f05cd..2522990313e96194a4519dcc8f098971b6ee00d5 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputDateCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputDateCest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine; +use Codeception\Attribute\DataProvider; use Codeception\Example; use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester; use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree; @@ -71,9 +72,7 @@ final class ElementsBasicInputDateCest extends AbstractElementsBasicCest ]; } - /** - * @dataProvider dbTypeDateEvalDateDataProvider - */ + #[DataProvider('dbTypeDateEvalDateDataProvider')] public function dbTypeDateEvalDate(ApplicationTester $I, Example $testData): void { $this->runInputFieldTest($I, $testData); @@ -109,9 +108,7 @@ final class ElementsBasicInputDateCest extends AbstractElementsBasicCest ]; } - /** - * @dataProvider dbTypeDateEvalDatetimeDataProvider - */ + #[DataProvider('dbTypeDateEvalDatetimeDataProvider')] public function dbTypeDateEvalDatetime(ApplicationTester $I, Example $testData): void { $this->runInputFieldTest($I, $testData); @@ -131,9 +128,7 @@ final class ElementsBasicInputDateCest extends AbstractElementsBasicCest ]; } - /** - * @dataProvider dbTypeDateEvalTimeDataProvider - */ + #[DataProvider('dbTypeDateEvalTimeDataProvider')] public function dbTypeDateEvalTime(ApplicationTester $I, Example $testData): void { $this->runInputFieldTest($I, $testData); @@ -169,9 +164,7 @@ final class ElementsBasicInputDateCest extends AbstractElementsBasicCest ]; } - /** - * @dataProvider dbTypeDateEvalTimeDataProvider_DbTypeDateTime - */ + #[DataProvider('dbTypeDateEvalTimeDataProvider_DbTypeDateTime')] public function checkThatValidationWorks_EvalDateTime_DbTypeDateTime(ApplicationTester $I, Example $testData): void { $this->runInputFieldTest($I, $testData); diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputEvalCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputEvalCest.php index e68d9e534aea87bdd797c1b498453f3e958dba61..62e74201dda9e22eed66b7fe9652cd32bf161962 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputEvalCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputEvalCest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine; +use Codeception\Attribute\DataProvider; use Codeception\Example; use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester; use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree; @@ -88,9 +89,7 @@ final class ElementsBasicInputEvalCest extends AbstractElementsBasicCest ]; } - /** - * @dataProvider simpleEvalInputFieldsDataProvider - */ + #[DataProvider('simpleEvalInputFieldsDataProvider')] public function simpleEvalInputFields(ApplicationTester $I, Example $testData): void { $this->runInputFieldTest($I, $testData); diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputRangeCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputRangeCest.php index 0e9ddb2bbb6b5f550377117a5a218b40f337c6e1..702a63937b316f164080c47fe816158621df9028 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputRangeCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputRangeCest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine; +use Codeception\Attribute\DataProvider; use Codeception\Example; use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester; use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree; @@ -101,9 +102,7 @@ final class ElementsBasicInputRangeCest extends AbstractElementsBasicCest ]; } - /** - * @dataProvider simpleRangeAndMd5FieldsDataProvider - */ + #[DataProvider('simpleRangeAndMd5FieldsDataProvider')] public function simpleRangeAndMd5Fields(ApplicationTester $I, Example $testData): void { $I->click($testData['tab']); diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputSimpleCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputSimpleCest.php index 95c77d801c7fba8f11fb25c2462314d269a29477..5e650e45eb7de3d71e0a1de29ba73971ec41cfb1 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputSimpleCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputSimpleCest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine; +use Codeception\Attribute\DataProvider; use Codeception\Example; use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester; use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree; @@ -182,9 +183,7 @@ final class ElementsBasicInputSimpleCest extends AbstractElementsBasicCest ]; } - /** - * @dataProvider simpleInputFieldsDataProvider - */ + #[DataProvider('simpleInputFieldsDataProvider')] public function simpleInputFields(ApplicationTester $I, Example $testData): void { $this->runInputFieldTest($I, $testData); diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicNumberCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicNumberCest.php index 8a476527b2c7a6da488516d98e780cc9acdc180c..73b5a6558241964c7ecdf766dda8615ef7dd76a4 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicNumberCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicNumberCest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine; +use Codeception\Attribute\DataProvider; use Codeception\Example; use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester; use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree; @@ -149,9 +150,7 @@ final class ElementsBasicNumberCest extends AbstractElementsBasicCest ]; } - /** - * @dataProvider simpleNumberFieldsDataProvider - */ + #[DataProvider('simpleNumberFieldsDataProvider')] public function simpleNumberFields(ApplicationTester $I, Example $testData): void { $this->runInputFieldTest($I, $testData); diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicPasswordCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicPasswordCest.php index 82fec3f50bf8458d1dc7bc5ffb73c4bcfc5e519a..20dd043a739d7aec0c2bd1cc7d07c33420378cce 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicPasswordCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicPasswordCest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine; +use Codeception\Attribute\DataProvider; use Codeception\Example; use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester; use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree; @@ -67,9 +68,7 @@ final class ElementsBasicPasswordCest extends AbstractElementsBasicCest ]; } - /** - * @dataProvider passwordInputFieldsDataProvider - */ + #[DataProvider('passwordInputFieldsDataProvider')] public function passwordInputFields(ApplicationTester $I, Example $testData): void { $this->runInputFieldTest($I, $testData); diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsEmptyElementsCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsEmptyElementsCest.php index 863a6a28f49e61261f4c9959f867e3e0bd278dd4..6a4b887786ec4f6bcbcf2b5b5b38e2c553fb6848 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsEmptyElementsCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsEmptyElementsCest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine; +use Codeception\Attribute\DataProvider; use Codeception\Example; use Facebook\WebDriver\WebDriverBy; use Facebook\WebDriver\WebDriverKeys; @@ -142,9 +143,7 @@ final class ElementsEmptyElementsCest extends AbstractElementsBasicCest ]; } - /** - * @dataProvider simpleRadioFieldsDataProvider - */ + #[DataProvider('simpleRadioFieldsDataProvider')] public function simpleRadioFields(ApplicationTester $I, Example $testData): void { $this->runRadioFieldTest($I, $testData); diff --git a/typo3/sysext/core/Tests/Acceptance/Application/Frontend/SitemapXmlCest.php b/typo3/sysext/core/Tests/Acceptance/Application/Frontend/SitemapXmlCest.php index 714e91d18f75665f7e2accca56970492731eee00..4516dd63d2fe79d249f14bcab4cc6462f173820f 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/Frontend/SitemapXmlCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/Frontend/SitemapXmlCest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Acceptance\Application\Frontend; +use Codeception\Attribute\DataProvider; use Codeception\Example; use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\Remote\RemoteWebElement; @@ -72,9 +73,7 @@ final class SitemapXmlCest ]; } - /** - * @dataProvider sitemapDataProvider - */ + #[DataProvider('sitemapDataProvider')] public function seeSitemapXml(ApplicationTester $I, Example $testData): void { $I->see('TYPO3 XML Sitemap'); diff --git a/typo3/sysext/core/Tests/Acceptance/Application/Info/InfoModuleCest.php b/typo3/sysext/core/Tests/Acceptance/Application/Info/InfoModuleCest.php index 91db5a19262d92c4594a1013a188454d3db9f04c..fade0e63e43af2075183498bff0788fe42768bd2 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/Info/InfoModuleCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/Info/InfoModuleCest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Acceptance\Application\Info; +use Codeception\Attribute\DataProvider; use Codeception\Example; use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester; use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree; @@ -42,9 +43,7 @@ final class InfoModuleCest ]; } - /** - * @dataProvider infoMenuDataProvider - */ + #[DataProvider('infoMenuDataProvider')] public function seeInfoSubModules(ApplicationTester $I, Example $exampleData): void { $I->amGoingTo('select ' . $exampleData['option'] . ' in dropdown'); diff --git a/typo3/sysext/core/Tests/Acceptance/Application/InstallTool/EnvironmentCest.php b/typo3/sysext/core/Tests/Acceptance/Application/InstallTool/EnvironmentCest.php index 2dd20f4c78384010eece9a1c7a4ada5afab27beb..9744dd267995cb1ac60aafc08b49115f7b1b9def 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/InstallTool/EnvironmentCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/InstallTool/EnvironmentCest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Acceptance\Application\InstallTool; +use Codeception\Attribute\DataProvider; use Codeception\Example; use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester; use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\ModalDialog; @@ -45,9 +46,7 @@ final class EnvironmentCest extends AbstractCest ]; } - /** - * @dataProvider cardsDataProvider - */ + #[DataProvider('cardsDataProvider')] public function seeCardsAndModals(ApplicationTester $I, ModalDialog $modalDialog, Example $testData): void { $I->see($testData['title']); diff --git a/typo3/sysext/core/Tests/Acceptance/Application/Redirect/RedirectModuleCest.php b/typo3/sysext/core/Tests/Acceptance/Application/Redirect/RedirectModuleCest.php index f4f6be6e332696c1ec88b009bc232d64e8922fc2..b219db8a3dc7c76b09a988058b60824773c01e8c 100644 --- a/typo3/sysext/core/Tests/Acceptance/Application/Redirect/RedirectModuleCest.php +++ b/typo3/sysext/core/Tests/Acceptance/Application/Redirect/RedirectModuleCest.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Acceptance\Application\Redirect; +use Codeception\Attribute\DataProvider; use Codeception\Example; use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester; @@ -89,9 +90,7 @@ final class RedirectModuleCest ]; } - /** - * @dataProvider possibleRedirectStatusCodes - */ + #[DataProvider('possibleRedirectStatusCodes')] public function seeStatusCodesWhenCreatingNewRedirect(ApplicationTester $I, Example $example): void { $I->amGoingTo('Create a redirect and see the different status codes'); diff --git a/typo3/sysext/frontend/Classes/ContentObject/FileLinkHookInterface.php b/typo3/sysext/frontend/Classes/ContentObject/FileLinkHookInterface.php index 80dcf3e9d6f1a11514589df5150e2acbd0cd028e..653435ea56097bc9ef3c397867494f258226e2e7 100644 --- a/typo3/sysext/frontend/Classes/ContentObject/FileLinkHookInterface.php +++ b/typo3/sysext/frontend/Classes/ContentObject/FileLinkHookInterface.php @@ -26,7 +26,6 @@ interface FileLinkHookInterface * Finds alternative previewImage for given File. * * @return File - * @abstract */ public function getPreviewImage(File $file); }