Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHPStorm 8 + PHPUnit 4.2.6 Error

I can't make PHPUnit 4.2.6 to work with PHPStorm 8.

PHPUnit is loaded as phar inside PHPStorm 8 settings.

Whenever i try to run unit test in PHPStorm i get this error:

Parse error: syntax error, unexpected '}' in /private/var/folders/qh/xjz1kr297v34pl6zy70_2rl00000gn/T/ide-phpunit.php(171) : eval()'d code on line 1

Call Stack:
0.0006     344584   1. {main}() /private/var/folders/qh/xjz1kr297v34pl6zy70_2rl00000gn/T/ide-phpunit.php:0
0.0007     344880   2. IDE_PHPUnit_Loader::init() /private/var/folders/qh/xjz1kr297v34pl6zy70_2rl00000gn/T/ide-phpunit.php:194


Warning: require_once(PHPUnit/Runner/Version.php): failed to open stream: No such file or directory in /private/var/folders/qh/xjz1kr297v34pl6zy70_2rl00000gn/T/ide-phpunit.php on line 49

When i looked into "ide-phpunit.php", i found that it tries to eval invalid code, because of invalid "substr" function usage.

So my question is, if someone managed to make PHPUnit 4.2.6 work with PHPStorm 8?

like image 781
Clickbeetle Avatar asked Feb 13 '23 00:02

Clickbeetle


2 Answers

Here is how to "unhack" the IDE to run with phpnunit.phar (4x+) nicely on windows and linux!

  1. Download phpunit.phar under php, set your phar location from the IDE -> settings -> phpunit and phar location. THEN CLOSE IDE
  2. Find where your plugin files are, for php on windows this would be :\Program Files (x86)\JetBrains\PhpStorm 8.0.3\plugins\php\lib.
  3. Open php.jar with winrar and open scripts/phpunit.php.
  4. Comment out all PHPUnit/… require statements, so autoloader can do its job instead of using hardcoded values.
  5. Go to public static function init() method.
  6. Find the if section with a comment at the end says “awful hack”, screenshot.
  7. Remove all the amateur hacky stuff and replace it with this, screenshot.
  8. Save the file, Winrar will prompt you to save the archive, SAVE that one too.
  9. Run IDE And Run your tests, coverage. Enjoy!

Hope this helps some of you out there. I will post the information to their forums as well.

like image 63
Yuxel Avatar answered Mar 05 '23 19:03

Yuxel


I got the exact same error, and fixed it like this:

  1. Installed phpunit using: composer global require phpunit/phpunit

  2. Goto phpstorm settings: PHPUnit

  3. Select "Use custom autoloader"

    • On Windows: C:\Users\[username]\AppData\Roaming\Composer\vendor\autoload.php
    • On Linux: /home/[username]/.composer/vendor/autoload.php
    • Or point it to the autoloader of your composer project
like image 34
Jimbolino Avatar answered Mar 05 '23 19:03

Jimbolino