Last modified: 2014-08-02 14:32:53 UTC
I have set a up a new VM with latest versions of vagrant and virtualbox to reproduce an error originally reported by Etienne. running vagrant up worked without issues and installed phpunit 4.0.17 from pear. (Which will be unsupported from Dec'14 on) However, the phpunit.php file within mediawiki does not work. See error messsage below: vagrant@mediawiki-vagrant:/vagrant/mediawiki/tests/phpunit$ ./phpunit.php --version PHP Warning: require_once(PHPUnit/Runner/Version.php): failed to open stream: No such file or directory in /vagrant/mediawiki/tests/phpunit/phpunit.php on line 108 PHP Stack trace: PHP 1. {main}() /vagrant/mediawiki/tests/phpunit/phpunit.php:0 Warning: require_once(PHPUnit/Runner/Version.php): failed to open stream: No such file or directory in /vagrant/mediawiki/tests/phpunit/phpunit.php on line 108 Call Stack: 0.0020 680640 1. {main}() /vagrant/mediawiki/tests/phpunit/phpunit.php:0 PHP Fatal error: require_once(): Failed opening required 'PHPUnit/Runner/Version.php' (include_path='.:/usr/share/php:/usr/share/pear') in /vagrant/mediawiki/tests/phpunit/phpunit.php on line 108 PHP Stack trace: PHP 1. {main}() /vagrant/mediawiki/tests/phpunit/phpunit.php:0 Fatal error: require_once(): Failed opening required 'PHPUnit/Runner/Version.php' (include_path='.:/usr/share/php:/usr/share/pear') in /vagrant/mediawiki/tests/phpunit/phpunit.php on line 108 Call Stack: 0.0020 680640 1. {main}() /vagrant/mediawiki/tests/phpunit/phpunit.php:0 vagrant@mediawiki-vagrant:/vagrant/mediawiki/tests/phpunit$ phpunit --version PHPUnit 4.0.17 by Sebastian Bergmann. You have installed PHPUnit via PEAR. This installation method is no longer supported and http://pear.phpunit.de/ will be shut down no later than December, 31 2014. Please read http://phpunit.de/manual/current/en/installation.html and learn how to use PHPUnit from a PHAR or install it via Composer.
Can anyone reproduce this problem?
Just ran into it. MediaWiki tries to require PHPUnit files directly, but the phpunit/phpunit PEAR channel now falls back to the PHAR method (install a single file, /usr/bin/phpunit, with all classes packed inside it). After extracting manually, I get "Failed opening required 'PHPUnit/Autoload.php'", which suggests that fixing this will not be as simple as changing the installation method. On a related note, the testing framework should be vendorized and included with the application, not left to the reuser to figure out which version to install and how. Now that MediaWiki is getting Composer support, this should be easy to do.
Autoloader.php was indeed removed from PHPUnit with 4.0. I assume it relies on Composer now to generate an autoloader on the fly.
As a temporary fix, you can downgrade to the last pre-4.x version: pear uninstall phpunit/PHPUnit pear install phpunit/PHPUnit-3.7.35
Change 132377 had a related patch set uploaded by Physikerwelt: Fix PHPUnit version to 3.7.35 https://gerrit.wikimedia.org/r/132377
Change 132377 merged by jenkins-bot: Fix PHPUnit version to 3.7.35 https://gerrit.wikimedia.org/r/132377
Please keep in mind that this is a "temporary fix". https://github.com/sebastianbergmann/phpunit/wiki/End-of-Life-for-PEAR-Installation-Method
It would be nice if someone could assign her/himself to work on this problem... the end of the year seems to be far now... but suddenly it will be very close;-)
Given https://gerrit.wikimedia.org/r/#/c/132788/ , can't we just define PHPUnit as a dev dependency and have mw-vagrant run composer install --dev when it checks out mediawiki/core?
Rephrased summary. The problem is that MediaWiki is trying to include the PHPUnit source files (from a global php import_path) directly. This method is last supported by PHPUnit 3.7. When using PHPUnit 4.x or later, this no longer works and users are unable to run the MediaWiki phpunit tests.
This is a duplicate of bug 58881 can't use phpunit.phar to invoke MediaWiki tests There is a bunch of patches in Gerrit attached to that bug which adds support for loading the .phar. *** This bug has been marked as a duplicate of bug 58881 ***