Коли CloverCoverage дає збій і проходить одночасно
Я говорив про переваги використання GrumPHP у попередніх публікаціях. Одним із інструментів, які ми використовували в проектах протягом останнього року чи більше, є Clover.
Фото Квентіна РІЯ на Unsplash
Через деякий час між тим, як ми почали його використовувати, і до цього тижня, він завжди не міг виконуватися щоразу на моїй локальній машині, але не на машині, на якій ми розгортали наш код.
І ні, це було не тому, що були неправильні директиви чи коментарі в модульних тестах, і не тому, що PHPUnit було неправильно налаштовано (він виконував усі тести та повідомляв про них, як очікувалося).
Так що дає?
Коли CloverCoverage не працює
Версія TL;DR цього:
Потрібно правильно встановити Xdebug, оскільки CloverCoverage потребує драйвера, тобто Xdebug, для належного виконання. Проблема полягає в тому, що якщо ви використовуєте Homebrew, ви не можете встановити його, як ми могли за один раз.
Залишок цієї публікації проведе вас через встановлення Xdebug, його належне налаштування у вашій конфігурації PHP, правильне налаштування вашої конфігурації PHPUnit, а потім перевірку того, що все перевірено, щоб наступного разу, коли ви запустите GrumPHP, ви повинні отримати всі зелені галочки. .
І, як додатковий бонус, наступного разу, коли ви запустите PHPUnit, ви отримаєте гарний звіт, який буде відповідати цьому. Ось що вам потрібно зробити.
По-перше, зауважте, що це ґрунтується на ідеї, що ви:
- за допомогою Homebrew,
- встановити PHPUnit,
- мати встановлений PHP 7.1 (на момент написання цієї публікації я використовую PHP 7.1.19),
- Clover не виконується належним чином.
Щоб перевірити кілька речей, виконайте таку команду в терміналі :
Переконайтеся, що ви використовуєте принаймні PHPUnit 7.1.4.
Далі перевірте свою версію PHP :
І переконайтеся, що ви використовуєте щонайменше PHP 7.1.19 (ваш результат не буде виглядати точно так, як мій, особливо щодо Xdebug, але це суть цього пункту).
На цьому етапі ми готові встановити Xdebug і почати вносити необхідні зміни в конфігурацію.
1 Встановіть Xdebug
Причина, чому ми змушені інсталювати Xdebug інакше, ніж раніше, полягає в тому, що він більше не підтримується Homebrew. Не хвилюйтеся, оскільки його так само легко встановити через Pecl.
Щоб встановити його, введіть таку команду в терміналі:
Потім ви повинні побачити повідомлення про те, що його встановлено та що розширення додано до вашого файлу конфігурації PHP. З мого досвіду, Pecl не робить останній крок правильно.
2 Знайдіть двійковий файл Xdebug на диску
Щоб вирішити цю проблему, нам потрібно:
- знайдіть повний шлях до розширення Xdebug,
- розмістіть повний шлях до розширення в нашому файлі конфігурації PHP
Щоб знайти шляхи, в яких може знаходитися Xdebug, скористайтеся такою командою :
Вам може бути повернуто кілька шляхів (хоча в ідеалі ви повинні отримати лише один). Якщо ви отримуєте більше одного, знайдіть той, який встановлено в шляху, який містить каталог Pecl. Ймовірно, це виглядатиме приблизно так :
/usr/local/lib/php/pecl/20160303/xdebug.so
Коли ви отримаєте список усіх місць , де встановлено Xdebug.so, скопіюйте шлях до файлу, щоб ми могли налаштувати PHP для посилання на нього та правильного його використання.
3 Оновіть конфігурацію PHP
Далі нам потрібно оновити конфігурацію PHP. Зробити це легко, оскільки нам просто потрібно додати один рядок до файлу PHP.ini. Звичайно, якщо у вас запущено кілька версій PHP, переконайтеся, що ви додали це до належного файлу конфігурації, залежатиме від версії PHP, яку ви використовуєте.
Якщо на вашому комп’ютері запущено кілька версій PHP, у вас буде кілька версій файлу конфігурації PHP. Якщо у вас встановлено одну версію, ви матимете один файл php.ini.
Зазвичай він знаходиться в /usr/local/etc/php/7.1/ як php.ini , якщо ви використовуєте PHP 7.1, але ваше розташування може дещо відрізнятися. Але наступний крок залишається незмінним.
Зробивши це, переконайтеся, що ви додали наступний рядок до файлу php.ini . Насправді це може бути в будь-якому місці файлу, але пам’ятайте, що вам потрібно включити повний шлях до Xdebug.so. Отже, файл повинен містити цей рядок :
zend_extension="/usr/local/lib/php/pecl/20160303/xdebug.so"
Далі все повинно працювати. Ви можете перевірити це , запустивши :
Потім ви повинні побачити таке повідомлення:
PHP 7.1.19 (cli) (створено: 25 червня 2018 р. 10:42:21) (NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
з Xdebug v2 .6.0, авторські права (c) 2002-2018, Дерік Ретанс
із Zend OPcache v7.1.19, авторські права (c) 1999-2018, Zend Technologies
Зверніть увагу на четвертий рядок, який містить примітку про Xdebug. Якщо ви бачите це, то все готово.
4 Налаштування PHPUnit
На цьому етапі останнє, що вам потрібно зробити, це переконатися, що ваш файл phpunit.xml налаштовано належним чином. Ось простий приклад того, як виглядає мій (це також включає підтримку Clover):
<?xml version="1.0" encoding="UTF-8"?>
<!-- http://phpunit.de/manual/4.1/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
bootstrap="./tests/bootstrap.php"
backupGlobals="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
>
<testsuites>
<testsuite name="Plugin">
<directory>./tests</directory>
<exclude>./tests/phpunit</exclude>
<exclude>./src/WordPress/*.php</exclude>
</testsuite>
</testsuites>
<logging>
<log type="coverage-clover" target="./coverage-report/coverage.xml"></log>
<log type="coverage-html" target="coverage-report" lowUpperBound="30" highLowerBound="80"></log>
<log type="coverage-text" target="php://stdout" showUncoveredFiles="false"></log>
</logging>
<filter>
<whitelist>
<directory>./src</directory>
</whitelist>
</filter>
</phpunit>
Далі ви можете вручну запустити PHPUnit і побачити гарний результат покриття коду.
Або ви можете запустити GrumPHP, щоб побачити суцільну зелену галочку (якщо ваші тести знаходяться в межах діапазону, який ви визначили в grump.yml ).
Остаточний результат
Хоча це може здатися великою кількістю кроків (і я припускаю, що це так), це не займе багато часу, щоб налаштувати це налаштування та запустити належним чином. Сподіваємось, наведене вище покрокове керівництво заощадить вам трохи часу під час роботи з PHP, PHPUnit тощо, коли CloverCoverage дає збій (і успішно одночасно під час безперервного розгортання).
Зараз я пишу електронну книгу (разом із різноманітним іншим преміум-контентом). Якщо вам цікаво, перевірте, що ви отримуєте.



