I’ve recently added a pull-request to Zend\Ldap and realized that some of the tests were failing on PHP7. Reason was that Error-handling has changed in PHP7 and the used PHPUnit-version 4.x didn’t know how to handle that. So I needed a version of PHPUnit that understood that, which is PHPUnit 5.x. Sadly the minimum PHP-Version for that is PHP5.6 so now the tests in PHP5.5 where failing.
How to handle that as there’s no way to tell composer to install a certain package-version when a certain PHP-Version is found and a different package-version for another PHP-version (At least I’m not aware of one – if you know of one please let me know!)
So what to do? As the tests are executed on Travis-CI I decided to rewrite the compser.json
-file when the tests are executed for PHP5.5.
And here’s how I did that:
For Zend\Ldap
we have this snippet in our .travis.yml
-file:
before_install:
- if [[ ${TRAVIS_PHP_VERSION:0:3} == "5.5" ]]; then composer require --dev --no-update phpunit/phpunit ~4; fi
install:
- travis_retry composer install --no-interaction --ignore-platform-reqs
The interesting part is the before_install part which checks whether the first three characters of the PHP-Version are 5.5 and then requires PHPUnit version 4. The default in the composer.json
is PHPUnit version 5 so as soon as Zend\Ldap
drops support for PHP5.5 we don’t have to remember to change that file, it just phases out.
After that PHPUnit 4 is installed and the tests run smoothly in all currently supported PHP-Versions (Actually they currently don’t, but that’s a different story and has nothing to do with the different PHPUnit-versions 😉 )
Update
Thanks to Abdul Malik Ikhsan I’ve found out about another way to require a more recent version of PHPUnit.
@heiglandreas there is another option by set "phpunit/phpunit": "^4.0|^5.0" in composer.json, that will solve that too 😉
— Abdul Malik Ikhsan (@samsonasik) November 12, 2015
Thanks!