Я использую Symfony 3.3.10 на PHP 7.0.25-0ubuntu0.16.04.1
По умолчанию эта комбинация идет с phpunit 5.x.
Но хочу заставить phpunit 6.x.
Когда я вызываю vendor/bin/simple-phpunit в первый раз, он устанавливает версию phpunit/phpunit5.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.
Я уже знаю, что могу установить env-var в свои сценарии bash и бла, бла, бла, но это неприемлемое решение по двум причинам:
git clone + composer install + vendor/bin/simple-phpunit, и это должно быть правильно протестировано без дополнительных ручных шагов.Можно ли указать проекту (возможно, что-то в composer.json) иметь какую-то причудливую настройку, чтобы мост phpunit symfony был вынужден использовать phpunit 6.x (например, 6.5) вместо версии 5.7 для все, устанавливающих репо и нет в зависимости от чего-либо глобального внешнего на репо?




Начиная с версии 4.1 вы можете настроить это в phpunit.xml / phpunit.xml.dist:
<php>
<env name = "SYMFONY_PHPUNIT_VERSION" value = "6.5" />
</php>
Версия 4.1 symfony/phpunit-bridge - github.com/symfony/phpunit-bridge/blob/v4.1.0/CHANGELOG.md#4 10
А, ладно ... Понятно. Мне сейчас нужен "symfony/phpunit-bridge": "^3.0" в моем композиторе. Если я обновлю майор, есть ли риск сломать все? Я имею в виду ... является ли мост 3 мыслью для Symfony 3 и мост 4 мыслью для Symfony 4? Или symfony 3 может безопасно работать с мостом 4, не ожидая, что слишком много сломается?
Я понятия не имею о сбоях BC, но Symfony 3.4.10 имеет symfony/phpunit-bridge: ~3.4|~4.0 в своем require-dev, так что я думаю, он должен работать нормально. packagist.org/packages/symfony/symfony#v3.4.10
Я использую bin/phpunit, установленный symfony/phpunit-bridge: 4.2.4. Я попробовал ваш метод установить версию phpunit на 7.5, но он не работает. Единственный рабочий способ - установить версию в bin/phpunit в строке putenv('SYMFONY_PHPUNIT_VERSION=7.5'). Вы знаете, почему это так?
версия 4.1 симфони? или версия 4.1 самого phpuunit?