Как заставить phpunit-мост symfony использовать phpunit 6.5 вместо 5.7? - PullRequest
0 голосов
/ 03 июня 2018

Проблема

Я использую Symfony 3.3.10 на PHP 7.0.25-0ubuntu0.16.04.1

По умолчанию эта комбинация идет с phpunit 5.x.

Но я хочу форсировать phpunit 6.x.

Контекст

Когда я в первый раз вызываю vendor/bin/simple-phpunit, он устанавливает phpunit/phpunit версию 5.7.*, как указано в исходном коде:

https://github.com/symfony/phpunit-bridge/blob/v3.4.11/bin/simple-phpunit

строки 18-27:

if (PHP_VERSION_ID >= 70200) {
    // PHPUnit 6 is required for PHP 7.2+
    $PHPUNIT_VERSION = getenv('SYMFONY_PHPUNIT_VERSION') ?: '6.5';
} elseif (PHP_VERSION_ID >= 50600) {
    // PHPUnit 4 does not support PHP 7
    $PHPUNIT_VERSION = getenv('SYMFONY_PHPUNIT_VERSION') ?: '5.7';
} else {
    // PHPUnit 5.1 requires PHP 5.6+
    $PHPUNIT_VERSION = '4.8';
}

Поскольку моя версия PHP 7.0, она выбирает версию phpunit 5.7.

Пробное решение

Я вижу, что могу "заставить" мост работать с phpunit 6.5, если я установлю его в переменной окружения:

В оболочке я делаю:

rm -Rf vendor
export SYMFONY_PHPUNIT_VERSION=6.5
composer install
vendor/bin/simple-phpunit

Теперь я правильно получаю: PHPUnit 6.5.8

Вместо этого, если я выйду из системы и снова войду в систему, он потеряет env-var и следующий вызов на vendor/bin/simple-phpunit и заставит установить 5.7.

Не говорите мне вставлять .bashrc

Я уже знаю, что могу установить env-var в свои скрипты bash и бла-бла-бла, но это не приемлемое решение по двум причинам:

  1. Я главныйБолее 50 хранилищ.Наличие этого набора всегда во всех оболочках может вызвать побочные эффекты в других проектах.
  2. Если я заставлю другого разработчика работать с этим репо, он сможет выполнить git clone + composer install + vendor/bin/simple-phpunitи это должно быть правильное тестирование без каких-либо дополнительных ручных шагов.

Вопрос

Можно ли сказать проекту (возможно, что-то в composer.json), что он придумалнастроить так, чтобы phpunit bridge symfony был вынужден использовать phpunit 6.x (например, 6.5) поверх 5.7 версии для всех установок репо и не в зависимости от чего-либо глобального внешнегов репо?

1 Ответ

0 голосов
/ 03 июня 2018

Начиная с версии 4.1 вы можете настроить это в phpunit.xml / phpunit.xml.dist:

<php>
    <env name="SYMFONY_PHPUNIT_VERSION" value="6.5" />
</php>
...