| Вопрос | А
| --------------------| ---------------
| Версия PHPUnit | ~4.7.0 \|\| ~5.0.0 \|\| ~5.1.0 \|\| ~5.2.0
| PHP-версия | не относится
| Способ установки | композитор
Выпущен PHP Timer v2. Он несовместим с упомянутым PHPUnit, так как PHPUnit с данной версией требует... >= 1
вместо ^1
. Для этого любая новая установка этого PHPUnit (в устаревшем проекте) будет аварийно завершать работу во время выполнения:
https://travis-ci.org/PHPUnitGoodPractices/Traits/jobs/341148960#L978
Неустранимая ошибка PHP: необработанная ошибка: класс «PHP_Timer» не найден в /home/travis/build/PHPUnitGoodPractices/Traits/vendor/phpunit/phpunit/src/Framework/TestResult. PHP: 577
Это особенно ударит по устаревшим проектам PHP, которые не могут позволить себе обновление PHPUnit напрямую.
Да, я знаю, что это будет воспринято как проблема неподдерживаемой версии и за это может быть закрыто из коробки, но в конце концов проблема в том, что php-timer major был только что выпущен.
Решение для грустных пользователей уязвимых устаревших версий PHPUnit:
добавьте к вашему composer.json
:
"conflict": {
"phpunit/php-timer": ">=2",
}
это в основном заставит PHPUnit требовать php-timer ^ 1, как и в других версиях PHPUnit.
PHPUnit 4.7, к сожалению, имеет "phpunit/php-timer": ">=1.0.6"
в composer.json
. Однако PHPUnit 4.7 давно был заменен PHPUnit 4.8. Нет причин не обновляться с PHPUnit 4.7 до PHPUnit 4.8. PHPUnit 4.8 имеет "phpunit/php-timer": "^1.0.6"
в composer.json
.
Вы также упоминаете PHPUnit 5.0, PHPUnit 5.1 и PHPUnit 5.2. Все эти версии имеют "phpunit/php-timer": "^1.0.6"
в composer.json
.
Что вы ожидаете, что я буду делать здесь? Выпустить новую версию PHPUnit 4.7 с обновленным composer.json
? Извините, но этого не будет. Решение, которое вы предоставили в https://github.com/sebastianbergmann/phpunit/issues/3008#issuecomment -365430405, должно быть достаточно хорошим. Конечно, правильным решением было бы обновить как минимум PHPUnit 4.8 или использовать PHAR PHPUnit 4.7.
Вы также упоминаете PHPUnit 5.0, PHPUnit 5.1 и PHPUnit 5.2. Все эти версии имеют "phpunit/php-timer": "^1.0.6" в файле composer.json.
нет, у 5.2.x-dev
есть phpunit/php-timer: ^1.0.6
,
но последняя стабильная версия 5.2,
5.2.12
имеет phpunit/php-timer: >=1.0.6
для этого 5.0.x, 5.1.x и 5.2.x также затронуты.
PHP Timer только что был выпущен, факт выпуска привел к проблеме с устаревшим PHPUnit, который я сильно ударил по моей компании и сторонним проектам, поэтому цель этой темы состояла в том, чтобы поднять проблему (чтобы ее могли найти пользователи, которые также ударили ее) и предоставить возможный обходной путь.
Как я уже сказал в первом посте, я не ожидаю выхода нового релиза phpunit 4/5. Спасибо!
Самый полезный комментарий
Решение для грустных пользователей уязвимых устаревших версий PHPUnit:
добавьте к вашему
composer.json
:это в основном заставит PHPUnit требовать php-timer ^ 1, как и в других версиях PHPUnit.