pest icon indicating copy to clipboard operation
pest copied to clipboard

[Bug]: PhpStorm generated Regex filtering out the tests when using 3.x-dev release

Open CamKem opened this issue 1 year ago • 2 comments

What Happened

I have come across an issue when using PhpStorm UI to press the arrow which runs a method level test. It generates a --filter flag with a Regex. In 2.34.7 (Current Release), it works fine, the test will be found, run & pass. However, when using the v3.0.0 (3.x-dev) the action will return an Exit Code 0 with no test run, as it filters out the method level running of the test suite.

This is the Regex it is generating: --filter=/^(P\)?Tests\NewTest::it\sthis\sis\sa\stest(\swith\s(data\sset\s"."|(.))(\s/\s(data\sset\s"."|(.)))*(\s#\d+)?)?$/

Expected Result

  • It will find the test and run it as expected.

Actual Result

  • The test is filtered out and the suite runs without any tests

I have attached screenshots of the test being run with the --debug flag.

How to Reproduce

  1. Initialise a new project.
  2. With composer install "pestphp/pest": "^v3.0.0" which will install 3.x-dev branch.
  3. Write a basic Pest test & press the green arrow in the UI to run the test
  4. The regex it generates filters out the method level testing using the PhpStorm UI
  5. Switch to "pestphp/pest": "^v2.34.7" and it runs fine.

Sample Repository

No response

Pest Version

3.x-dev

PHP Version

8.3.6

Operation System

macOS

Notes

I have attached screenshots of the same test being run using both the v2.x & v3.x with the --debug flag. Screenshot 2024-05-03 at 8 20 56 pm Screenshot 2024-05-03 at 8 28 07 pm

CamKem avatar May 03 '24 11:05 CamKem

Looks like __pest_evaluable_ prefix isn't prepended to test names anymore.

That's why the filter --filter=/^(P\)?Tests\NewTest::it\sthis\sis\sa\stest(\swith\s(data\sset\s"."|(.))(\s/\s(data\sset\s"."|(.)))*(\s#\d+)?)?$/ doesn't work in Pest 3.x-dev, but the filter --filter=/^(P\)?Tests\NewTest::__pest_evaluable_it\sthis\sis\sa\stest(\swith\s(data\sset\s"."|(.))(\s/\s(data\sset\s"."|(.)))*(\s#\d+)?)?$/ works just fine

Do you have any ideas, is it a random regression that will be fixed for the Pest v3 release or is it a implication of new features for v3 release?

smirok avatar May 21 '24 16:05 smirok

Looks like __pest_evaluable_ prefix isn't prepended to test names anymore.

That's why the filter --filter=/^(P\)?Tests\NewTest::it\sthis\sis\sa\stest(\swith\s(data\sset\s"."|(.))(\s/\s(data\sset\s"."|(.)))*(\s#\d+)?)?$/ doesn't work in Pest 3.x-dev, but the filter --filter=/^(P\)?Tests\NewTest::__pest_evaluable_it\sthis\sis\sa\stest(\swith\s(data\sset\s"."|(.))(\s/\s(data\sset\s"."|(.)))*(\s#\d+)?)?$/ works just fine

Do you have any ideas, is it a random regression that will be fixed for the Pest v3 release or is it a implication of new features for v3 release?

Thanks for looking into it on the PhpStorm/Jetbrains side, I'm not certain of the direction for v3 regarding the prefix, so I let @nunomaduro know you had responded & he mentioned he'll check it out when he gets a chance, so we can resolve the issue.

CamKem avatar May 23 '24 10:05 CamKem

fixed.

nunomaduro avatar Aug 22 '24 20:08 nunomaduro