diff --git a/src/Rules/PHPUnit/EmptyDataProviderRule.php b/src/Rules/PHPUnit/EmptyDataProviderRule.php index a051127..ac01dd3 100644 --- a/src/Rules/PHPUnit/EmptyDataProviderRule.php +++ b/src/Rules/PHPUnit/EmptyDataProviderRule.php @@ -63,7 +63,7 @@ public function processNode(Node $node, Scope $scope): array foreach ($returnStatements as $returnStatement) { $returnExpr = $returnStatement->getReturnNode()->expr; if ($returnExpr === null) { - return []; + continue; } $returnType = $returnStatement->getScope()->getType($returnExpr); diff --git a/tests/Rules/PHPUnit/EmptyDataProviderRuleTest.php b/tests/Rules/PHPUnit/EmptyDataProviderRuleTest.php index c06ef57..c3d90bf 100644 --- a/tests/Rules/PHPUnit/EmptyDataProviderRuleTest.php +++ b/tests/Rules/PHPUnit/EmptyDataProviderRuleTest.php @@ -63,6 +63,10 @@ public function testRule(?int $version): void 'Data provider method provideData() provides no data sets, which is an error in PHPUnit 10 and newer.', 158, ]; + $errors[] = [ + 'Data provider method provideData() provides no data sets, which is an error in PHPUnit 10 and newer.', + 190, + ]; } // DataProviderHelper only reads the attribute when the detected major version supports it. diff --git a/tests/Rules/PHPUnit/data/empty-data-provider.php b/tests/Rules/PHPUnit/data/empty-data-provider.php index 4e16349..d6bac34 100644 --- a/tests/Rules/PHPUnit/data/empty-data-provider.php +++ b/tests/Rules/PHPUnit/data/empty-data-provider.php @@ -300,3 +300,25 @@ public static function provideData(bool $flag = false) } } + +class IteratorWithEmptyReturn extends \PHPUnit\Framework\TestCase +{ + + /** + * @return iterable + */ + public function dataFileAsserts(): iterable + { + if (PHP_VERSION_ID >= 80000) { + return []; + } + + yield 1; + yield 2; + } + + /** + * @dataProvider dataFileAsserts + */ + public function testFileAsserts() {} +}