Как заставить мост phpunit symfony использовать phpunit 6.5 вместо 5.7?

Проблема

Я использую 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.

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

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

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

Вопрос

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
5
0
1 428
1

Ответы 1

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

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

версия 4.1 симфони? или версия 4.1 самого phpuunit?

Xavi Montero 03.06.2018 12:40

Версия 4.1 symfony/phpunit-bridge - github.com/symfony/phpunit-bridge/blob/v4.1.0/CHANGELOG.md#4‌ 10

rob006 03.06.2018 12:59

А, ладно ... Понятно. Мне сейчас нужен "symfony/phpunit-bridge": "^3.0" в моем композиторе. Если я обновлю майор, есть ли риск сломать все? Я имею в виду ... является ли мост 3 мыслью для Symfony 3 и мост 4 мыслью для Symfony 4? Или symfony 3 может безопасно работать с мостом 4, не ожидая, что слишком много сломается?

Xavi Montero 03.06.2018 13:56

Я понятия не имею о сбоях BC, но Symfony 3.4.10 имеет symfony/phpunit-bridge: ~3.4|~4.0 в своем require-dev, так что я думаю, он должен работать нормально. packagist.org/packages/symfony/symfony#v3.4.10

rob006 03.06.2018 14:16

Я использую bin/phpunit, установленный symfony/phpunit-bridge: 4.2.4. Я попробовал ваш метод установить версию phpunit на 7.5, но он не работает. Единственный рабочий способ - установить версию в bin/phpunit в строке putenv('SYMFONY_PHPUNIT_VERSION=7.5'). Вы знаете, почему это так?

yifei3212 01.04.2019 01:21

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