Проблема
Я использую 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 и бла-бла-бла, но это не приемлемое решение по двум причинам:
- Я главныйБолее 50 хранилищ.Наличие этого набора всегда во всех оболочках может вызвать побочные эффекты в других проектах.
- Если я заставлю другого разработчика работать с этим репо, он сможет выполнить
git clone
+ composer install
+ vendor/bin/simple-phpunit
и это должно быть правильное тестирование без каких-либо дополнительных ручных шагов.
Вопрос
Можно ли сказать проекту (возможно, что-то в composer.json
), что он придумалнастроить так, чтобы phpunit bridge symfony был вынужден использовать phpunit 6.x
(например, 6.5
) поверх 5.7
версии для всех установок репо и не в зависимости от чего-либо глобального внешнегов репо?