Неисправимая ошибка TravisCI PHPUnit - вызов неопределенного метода PHPUnit_Util_Configuration::getTestdoxGroupConfiguration()

Моя сборка TravisCI не выполняется из-за фатальной ошибки ссылки PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() хотя PHPUnit работает без проблем локально. Я убедился, что Composer на TravisCI устанавливает ту же версию PHPUnit, что и локальную.

Я заметил, что недавний патч ссылается на конфигурацию групп testdox, но я не могу понять, почему это изменение могло сломать PHPUnit в TravisCI, а не в моей локальной версии.

Вот композитор от TravisCI:

- Installing phpunit/phpunit (5.7.6) Downloading: 100%

И вот фатальная ошибка и трассировка стека от TravisCI:

PHP Fatal error:  Call to undefined method PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in /home/travis/build/twistofreality/dilmun/vendor/phpunit/phpunit/src/TextUI/TestRunner.php on line 1042
PHP Stack trace:
PHP   1. {main}() /home/travis/.phpenv/versions/5.6.5/bin/phpunit:0
PHP   2. PHPUnit_TextUI_Command::main() /home/travis/.phpenv/versions/5.6.5/bin/phpunit:722
PHP   3. PHPUnit_TextUI_Command->run() phar:///home/travis/.phpenv/versions/5.6.5/bin/phpunit/phpunit/TextUI/Command.php:104
PHP   4. PHPUnit_TextUI_TestRunner->doRun() phar:///home/travis/.phpenv/versions/5.6.5/bin/phpunit/phpunit/TextUI/Command.php:152
PHP   5. PHPUnit_TextUI_TestRunner->handleConfiguration() /home/travis/build/twistofreality/dilmun/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:163

2 ответа

Решение

Проблема заключается в несовпадении версий между глобальной версией TravisCI PHPUnit и тем, что устанавливает Composer. Обратите внимание на две последние строки трассировки стека:

PHP   4. PHPUnit_TextUI_TestRunner->doRun() phar:///home/travis/.phpenv/versions/5.6.5/bin/phpunit/phpunit/TextUI/Command.php:152
PHP   5. PHPUnit_TextUI_TestRunner->handleConfiguration() /home/travis/build/twistofreality/dilmun/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:163

Последняя строка ссылается на vendor/phpunit (в данном случае на выход Composer версии 5.7.6), а вторая-последняя строка ссылается на глобальный bin / phpunit TravisCI (версия 5.6.5). Вероятно, патч в более поздней версии что-то ломает при попытке вызвать что-то в глобальной версии.

Обновление.travis.yml для использования vendor/bin/phpunit (плюс любые флаги), чтобы использовать версию, установленную Composer, исправляет проблему. В частности, добавление этой строки в.travis.yml (или, как в моем случае, изменение существующей строки phpunit), сделает свое дело:

script:
    - vendor/bin/phpunit [phpunit flags here]

Просто добавь

script:
  - vendor/bin/phpunit

на ваш travis.yml файл

Другие вопросы по тегам