|
8 | 8 | use PHPStan\Rules\Rule; |
9 | 9 | use PHPStan\Testing\RuleTestCase; |
10 | 10 | use PHPStan\Type\FileTypeMapper; |
| 11 | +use PHPUnit\Framework\Attributes\DataProvider; |
11 | 12 | use const PHP_VERSION_ID; |
12 | 13 |
|
13 | 14 | /** |
14 | 15 | * @extends RuleTestCase<CompositeRule> |
15 | 16 | */ |
16 | 17 | class DataProviderDataRuleTest extends RuleTestCase |
17 | 18 | { |
18 | | - private int $phpunitVersion; |
| 19 | + private ?int $phpunitVersion; |
19 | 20 |
|
20 | 21 | protected function getRule(): Rule |
21 | 22 | { |
@@ -272,36 +273,44 @@ public function testTrimmingArgs(): void |
272 | 273 | ]); |
273 | 274 | } |
274 | 275 |
|
275 | | - public function testNamedArgumentsInDataProviders(): void |
| 276 | + static public function provideNamedArgumentVersions(): iterable |
276 | 277 | { |
277 | | - $this->phpunitVersion = 10; |
278 | | - |
279 | | - $this->analyse([__DIR__ . '/data/data-provider-named-args.php'], [ |
280 | | - [ |
281 | | - 'Parameter #1 $int of method DataProviderNamedArgs\FooTest::testFoo() expects int, string given.', |
282 | | - 26 |
283 | | - ], |
284 | | - [ |
285 | | - 'Parameter #2 $string of method DataProviderNamedArgs\FooTest::testFoo() expects string, int given.', |
286 | | - 26 |
287 | | - ], |
288 | | - ]); |
| 278 | + return [ |
| 279 | + [null], |
| 280 | + [10], |
| 281 | + [11], |
| 282 | + ]; |
289 | 283 | } |
290 | 284 |
|
291 | | - public function testNamedArgumentsInDataProvidersPhpUnit11OrNewer(): void |
| 285 | + /** |
| 286 | + * @dataProvider provideNamedArgumentVersions |
| 287 | + */ |
| 288 | + #[DataProvider('provideNamedArgumentVersions')] |
| 289 | + public function testNamedArgumentsInDataProviders(?int $phpunitVersion): void |
292 | 290 | { |
293 | | - if (PHP_VERSION_ID < 80000) { |
294 | | - self::markTestSkipped('PHPUnit11 requires PHP 8.0.'); |
295 | | - } |
| 291 | + $this->phpunitVersion = $phpunitVersion; |
296 | 292 |
|
297 | | - $this->phpunitVersion = 11; |
| 293 | + if ($phpunitVersion >= 11) { |
| 294 | + $errors = []; |
| 295 | + $this->analyse([__DIR__ . '/data/data-provider-named-args.php'], [ |
| 296 | + ]); |
| 297 | + } else { |
| 298 | + $errors = [ |
| 299 | + [ |
| 300 | + 'Parameter #1 $int of method DataProviderNamedArgs\FooTest::testFoo() expects int, string given.', |
| 301 | + 26 |
| 302 | + ], |
| 303 | + [ |
| 304 | + 'Parameter #2 $string of method DataProviderNamedArgs\FooTest::testFoo() expects string, int given.', |
| 305 | + 26 |
| 306 | + ], |
| 307 | + ]; |
| 308 | + } |
298 | 309 |
|
299 | | - $this->analyse([__DIR__ . '/data/data-provider-named-args.php'], [ |
300 | | - ]); |
| 310 | + $this->analyse([__DIR__ . '/data/data-provider-named-args.php'], $errors); |
301 | 311 | } |
302 | 312 |
|
303 | | - |
304 | | - /** |
| 313 | + /** |
305 | 314 | * @return string[] |
306 | 315 | */ |
307 | 316 | public static function getAdditionalConfigFiles(): array |
|
0 commit comments