False InvalidArgument for named dataset keys (PHPUnit 11+)
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 35/100
Research direction
Read TestCaseHandler::afterStatementAnalysis() and the argument checks it performs, then inspect the named dataset handling and test fixture in phpstan-phpunit’s DataProviderDataRule for reference. Add coverage for named keys, unknown parameter names, positional datasets, and PHPUnit 10 compatibility. Done when the plugin reports valid PHPUnit 11 named datasets correctly and the tests pass; a linked pull request is already open.
Written by the indexing model from the issue text.
Description
Since PHPUnit 11, string keys in a dataset are passed as named arguments. The plugin matches dataset entries to parameters by position, so a valid provider is reported:
/** @return iterable<array{currency: string, cents: int}> */
public static function prices(): iterable
{
yield ['currency' => 'EUR', 'cents' => 100];
}
#[DataProvider('prices')]
public function testPrice(int $cents, string $currency): void {} // two InvalidArgument reports
phpstan-phpunit handles named entries (DataProviderDataRule, see its data-provider-data-named test fixture).
Idea: in the argument checks of TestCaseHandler::afterStatementAnalysis(), match string keys of a TKeyedArray dataset to parameter names (and report unknown names), falling back to positional matching for list-shaped datasets. It should take the PHPUnit version into account while PHPUnit 10 is supported. Roughly 50 lines with tests.
Idea borrowed from phpstan/phpstan-phpunit.
- Dominant language
- Gherkin
- Stars
- 79
- Forks
- 38
- Avg merge
- 6h 52m
- Merged PRs (30d)
- 28
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from psalm/psalm-plugin-phpunit
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
psalm/psalm-plugin-phpunit#222 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
psalm/psalm-plugin-phpunit#220 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
psalm/psalm-plugin-phpunit#219 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
psalm/psalm-plugin-phpunit#216 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 3/5 1-2 days Newbie friendliness 57/100
psalm/psalm-plugin-phpunit#223 ·
Maintainers usually reply within 1 day
All issues in psalm/psalm-plugin-phpunit
Similar issues
-
area: build-and-ci S3: minor
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
manaflow-ai/cmux#39902 ·
Maintainers usually reply within 1 day
-
ai core enhancement good first issue testing
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
bug drawing-tools
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
cofade/open-garden-planner#827 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Unit tests use deprecated constant (part 2)Possibly taken @servo-highfive claimed this today. OpenE-less-complex
Difficulty 1/5 Under an hour Newbie friendliness 84/100
servo/servo#49766 · 1 comment ·
Maintainers usually reply within 1 day