{"id":230662,"date":"2022-12-05T18:46:00","date_gmt":"2022-12-05T15:46:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230662"},"modified":"2022-11-09T23:25:45","modified_gmt":"2022-11-09T20:25:45","slug":"lorsque-clovercoverage-echoue-et-passe-simultanement","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/lorsque-clovercoverage-echoue-et-passe-simultanement\/","title":{"rendered":"Lorsque CloverCoverage \u00e9choue et passe simultan\u00e9ment"},"content":{"rendered":"\n<p>J&rsquo;ai parl\u00e9 des avantages de l&rsquo;utilisation de <strong><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a><\/strong> dans <strong><a href=\"https:\/\/tommcfarlin.com\/the-independent-wordpress-developer\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">les articles pr\u00e9c\u00e9dents<\/a><\/strong>. L&rsquo;un des outils que nous avons utilis\u00e9s dans des projets au cours de la derni\u00e8re ann\u00e9e ou plus est <strong><a href=\"https:\/\/confluence.atlassian.com\/clover\/about-code-coverage-71599496.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Clover<\/a><\/strong>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c1715af.jpg\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c1715af.jpg\" alt=\"Lorsque CloverCoverage \u00e9choue et passe simultan\u00e9ment\" ><\/a><\/p>\n<p>Photo de Quentin REY sur Unsplash<\/p>\n<p>Quelque temps entre le moment o\u00f9 nous avons commenc\u00e9 \u00e0 l&rsquo;utiliser et cette semaine, il \u00e9chouait toujours \u00e0 s&rsquo;ex\u00e9cuter \u00e0 chaque fois sur ma machine locale, mais pas sur la machine sur laquelle nous d\u00e9ployions notre code.<\/p>\n<p>Et non, ce n&rsquo;\u00e9tait pas parce qu&rsquo;il y avait des directives ou des commentaires incorrects dans les tests unitaires et ce n&rsquo;\u00e9tait pas parce que <strong><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPUnit<\/a><\/strong> \u00e9tait mal configur\u00e9 (il ex\u00e9cutait tous les tests et les signalait comme pr\u00e9vu).<\/p>\n<p>Alors qu&rsquo;est-ce qui donne ?<\/p>\n<h2>Lorsque CloverCoverage \u00e9choue<\/h2>\n<p>La version TL; DR de ceci\u00a0:<\/p>\n<p>Vous devez avoir <strong><a href=\"https:\/\/xdebug.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Xdebug<\/a><\/strong> correctement install\u00e9 car CloverCoverage n\u00e9cessite un pilote &#8211; c&rsquo;est-\u00e0-dire Xdebug &#8211; pour s&rsquo;ex\u00e9cuter correctement. Le probl\u00e8me est que si vous utilisez <strong><a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Homebrew<\/a><\/strong>, vous ne pouvez pas l&rsquo;installer comme nous le pouvions \u00e0 un moment donn\u00e9.<\/p>\n<p>Le reste de cet article vous expliquera comment installer Xdebug, le configurer correctement dans votre configuration PHP, configurer correctement votre configuration PHPUnit, puis v\u00e9rifier que tout est v\u00e9rifi\u00e9 afin que la prochaine fois que vous ex\u00e9cuterez GrumPHP, vous devriez obtenir toutes les coches vertes. .<\/p>\n<p>Et, en prime, la prochaine fois que vous ex\u00e9cuterez PHPUnit, vous devriez obtenir un rapport attrayant pour accompagner cela. Voici ce que vous devez faire.<\/p>\n<p>Tout d&rsquo;abord, notez que cela repose sur l&rsquo;id\u00e9e que vous \u00eates\u00a0:<\/p>\n<ul>\n<li>en utilisant Homebrew,<\/li>\n<li>avoir install\u00e9 PHPUnit,<\/li>\n<li>avoir PHP 7.1 install\u00e9 (j&rsquo;utilise PHP 7.1.19 au moment d&rsquo;\u00e9crire ce post),<\/li>\n<li>Clover ne s&rsquo;ex\u00e9cute pas correctement.<\/li>\n<\/ul>\n<p>Pour v\u00e9rifier certaines choses, lancez la commande suivante <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-00-phpunit-version-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dans le terminal<\/a><\/strong> :<\/p>\n<p>Assurez-vous que vous utilisez au moins PHPUnit 7.1.4.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c3ef638.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c3ef638.png\" alt=\"Lorsque CloverCoverage \u00e9choue et passe simultan\u00e9ment\" ><\/a><\/p>\n<p>Ensuite, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-01-php-version-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">v\u00e9rifiez votre version PHP<\/a><\/strong> :<\/p>\n<p>Et assurez-vous que vous ex\u00e9cutez au moins PHP 7.1.19 (votre sortie ne ressemble pas exactement \u00e0 la mienne, en particulier en ce qui concerne Xdebug, mais c&rsquo;est le but de ce point).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c6881a9.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c6881a9.png\" alt=\"Lorsque CloverCoverage \u00e9choue et passe simultan\u00e9ment\" ><\/a><\/p>\n<p>\u00c0 ce stade, nous sommes pr\u00eats \u00e0 installer Xdebug et \u00e0 commencer \u00e0 apporter les modifications de configuration n\u00e9cessaires.<\/p>\n<h3>1 Installer Xdebug<\/h3>\n<p>La raison pour laquelle nous devons installer Xdebug diff\u00e9remment qu&rsquo;auparavant est qu&rsquo;il n&rsquo;est plus pris en charge par Homebrew. Pas de soucis cependant, car il est tout aussi facile \u00e0 installer via <strong><a href=\"https:\/\/pecl.php.net\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pecl<\/a><\/strong>.<\/p>\n<p>Pour l&rsquo;installer, saisissez <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-02-install-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">la commande suivante<\/a><\/strong> dans votre terminal\u00a0:<\/p>\n<p>Vous devriez alors voir un message indiquant qu&rsquo;il a \u00e9t\u00e9 install\u00e9 et que l&rsquo;extension a \u00e9t\u00e9 ajout\u00e9e \u00e0 votre fichier de configuration PHP. D&rsquo;apr\u00e8s mon exp\u00e9rience, Pecl n&rsquo;obtient pas la derni\u00e8re \u00e9tape correctement.<\/p>\n<h3>2 Localisez le binaire Xdebug sur le disque<\/h3>\n<p>Pour rem\u00e9dier \u00e0 cela, nous devons :<\/p>\n<ol>\n<li>localiser le chemin complet de l&rsquo;extension Xdebug,<\/li>\n<li>placez le chemin complet vers l&rsquo;extension dans notre fichier de configuration PHP<\/li>\n<\/ol>\n<p>Pour trouver les chemins dans lesquels Xdebug peut r\u00e9sider, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-04-find-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">utilisez la commande suivante<\/a><\/strong>\u00a0:<\/p>\n<p>Vous pouvez obtenir plusieurs chemins retourn\u00e9s (id\u00e9alement, cependant, vous ne devriez en obtenir qu&rsquo;un). Si vous en obtenez plusieurs, recherchez celui install\u00e9 dans le chemin contenant le r\u00e9pertoire Pecl. <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-05-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Cela ressemblera probablement \u00e0 quelque chose comme \u00e7a<\/a><\/strong> :<\/p>\n<pre><code>\/usr\/local\/lib\/php\/pecl\/20160303\/xdebug.so<\/code><\/pre>\n<p>Une fois que vous obtenez une liste de tous les endroits o\u00f9 <strong>Xdebug.so<\/strong> est install\u00e9, copiez le chemin du fichier afin que nous puissions configurer PHP pour le r\u00e9f\u00e9rencer et l&rsquo;utiliser correctement.<\/p>\n<h3>3 Mettre \u00e0 jour la configuration de PHP<\/h3>\n<p>Ensuite, nous devons mettre \u00e0 jour la configuration de PHP. Cela est facile car nous avons simplement besoin d&rsquo;ajouter une seule ligne au fichier PHP.ini. Bien s\u00fbr, si vous avez plusieurs versions de PHP en cours d&rsquo;ex\u00e9cution, assurez-vous de l&rsquo;ajouter au bon fichier de configuration d\u00e9pendra de la version de PHP que vous utilisez.<\/p>\n<p>Si vous avez plusieurs versions de PHP en cours d&rsquo;ex\u00e9cution sur votre machine, vous aurez alors plusieurs versions du fichier de configuration PHP. Si vous avez une seule version install\u00e9e, vous aurez un seul\u00a0 fichier <strong>php.ini<\/strong>.<\/p>\n<p>Ceci est g\u00e9n\u00e9ralement situ\u00e9 dans <strong>\/usr\/local\/etc\/php\/7.1\/<\/strong> en tant que <strong>php.ini\u00a0<\/strong> si vous utilisez PHP 7.1 mais votre emplacement peut \u00eatre l\u00e9g\u00e8rement diff\u00e9rent. Mais l&rsquo;\u00e9tape suivante reste la m\u00eame.<\/p>\n<p>Une fois que vous avez fait cela, assurez-vous d&rsquo;ajouter la ligne suivante au\u00a0 fichier <strong>php.ini\u00a0<\/strong>. Cela peut \u00eatre n&rsquo;importe o\u00f9 dans le fichier, vraiment, mais rappelez-vous que vous devez inclure le chemin complet vers Xdebug.so. Le fichier doit donc <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-06-php-ini\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">inclure cette ligne<\/a><\/strong> :<\/p>\n<pre><code>zend_extension=\"\/usr\/local\/lib\/php\/pecl\/20160303\/xdebug.so\"<\/code><\/pre>\n<p>A partir de l\u00e0, tout devrait fonctionner. Vous pouvez le v\u00e9rifier <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-07-verify-xdebug-installation-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">en ex\u00e9cutant<\/a><\/strong> :<\/p>\n<p>Et puis vous devriez voir le message suivant :<\/p>\n<blockquote>\n<p>PHP 7.1.19 (cli) (construit\u00a0: 25 juin 2018 10:42:21) (NTS)<br \/>\nCopyright (c) 1997-2018 The PHP Group<br \/>\nZend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies<br \/>\nwith Xdebug v2 .6.0, Copyright (c) 2002-2018, par Derick Rethans<br \/>\navec Zend OPcache v7.1.19, Copyright (c) 1999-2018, par Zend Technologies<\/p>\n<\/blockquote>\n<p>Notez la quatri\u00e8me ligne qui inclut une remarque sur Xdebug. Si vous voyez cela, alors vous \u00eates pr\u00eat \u00e0 partir.<\/p>\n<h3>4 Configuration de PHPUnit<\/h3>\n<p>\u00c0 ce stade, la derni\u00e8re chose que vous devez faire est de vous assurer que votre fichier phpunit.xml est correctement configur\u00e9. <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-08-phpunit-xml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Voici un exemple simple<\/a><\/strong> de ce \u00e0 quoi ressemble le mien (cela inclut \u00e9galement la prise en charge de Clover):<\/p>\n<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n\n&lt;!-- http:\/\/phpunit.de\/manual\/4.1\/en\/appendixes.configuration.html --&gt;\n&lt;phpunit xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n         xsi:noNamespaceSchemaLocation=\"http:\/\/schema.phpunit.de\/4.1\/phpunit.xsd\"\n         bootstrap=\".\/tests\/bootstrap.php\"\n         backupGlobals=\"false\"\n         colors=\"true\"\n         convertErrorsToExceptions=\"true\"\n         convertNoticesToExceptions=\"true\"\n         convertWarningsToExceptions=\"true\"\n&gt;\n  &lt;testsuites&gt;\n    &lt;testsuite name=\"Plugin\"&gt;\n      &lt;directory&gt;.\/tests&lt;\/directory&gt;\n      &lt;exclude&gt;.\/tests\/phpunit&lt;\/exclude&gt;\n      &lt;exclude&gt;.\/src\/WordPress\/*.php&lt;\/exclude&gt;\n    &lt;\/testsuite&gt;\n  &lt;\/testsuites&gt;\n\n  &lt;logging&gt;\n    &lt;log type=\"coverage-clover\" target=\".\/coverage-report\/coverage.xml\"&gt;&lt;\/log&gt;\n    &lt;log type=\"coverage-html\" target=\"coverage-report\" lowUpperBound=\"30\" highLowerBound=\"80\"&gt;&lt;\/log&gt;\n    &lt;log type=\"coverage-text\" target=\"php:\/\/stdout\" showUncoveredFiles=\"false\"&gt;&lt;\/log&gt;\n  &lt;\/logging&gt;\n\n  &lt;filter&gt;\n    &lt;whitelist&gt;\n      &lt;directory&gt;.\/src&lt;\/directory&gt;\n    &lt;\/whitelist&gt;\n  &lt;\/filter&gt;\n&lt;\/phpunit&gt;<\/code><\/pre>\n<p>Ensuite, vous pouvez ex\u00e9cuter manuellement PHPUnit et voir une belle sortie de couverture de code.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c93ef83.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-162830-61e745c93ef83.png\" alt=\"Lorsque CloverCoverage \u00e9choue et passe simultan\u00e9ment\" ><\/a><\/p>\n<p>Ou vous pouvez ex\u00e9cuter GrumPHP pour voir la coche verte continue (en supposant que vos tests se situent dans la plage que vous avez d\u00e9finie dans <strong>grump.yml<\/strong> ).<\/p>\n<h2>Le r\u00e9sultat final<\/h2>\n<p>Bien que cela puisse sembler beaucoup d&rsquo;\u00e9tapes (et je suppose que c&rsquo;est le cas), il ne faut pas longtemps pour que cette configuration fonctionne correctement. Esp\u00e9rons que la proc\u00e9dure pas \u00e0 pas ci-dessus vous fera gagner un peu de temps lorsque vous travaillez avec PHP, PHPUnit, etc. lorsque CloverCoverage \u00e9choue (et r\u00e9ussit simultan\u00e9ment lors d&rsquo;un d\u00e9ploiement continu).<\/p>\n<p>J&rsquo;\u00e9cris actuellement un livre \u00e9lectronique (avec une vari\u00e9t\u00e9 d&rsquo;autres contenus premium). Si vous \u00eates int\u00e9ress\u00e9, <a href=\"https:\/\/tommcfarlin.com\/registration-info\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">regardez ce que vous obtenez<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La proc\u00e9dure pas \u00e0 pas suivante devrait vous faire gagner un peu de temps lorsque vous travaillez avec PHP, PHPUnit, etc. lorsque CloverCoverage \u00e9choue (et r\u00e9ussit simultan\u00e9ment pendant le d\u00e9ploiement continu) afin que vous sachiez ce que vous faites pour que PHPUnit et Clover fonctionnent correctement sur votre syst\u00e8me. .<\/p>\n","protected":false},"author":1,"featured_media":162831,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[801],"tags":[1167],"class_list":["post-230662","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230662","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=230662"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230662\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/162831"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=230662"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=230662"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=230662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}