{"id":230795,"date":"2022-12-05T18:09:00","date_gmt":"2022-12-05T15:09:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230795"},"modified":"2022-11-10T00:02:11","modified_gmt":"2022-11-09T21:02:11","slug":"quando-o-clovercoverage-falha-e-passa-simultaneamente","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/quando-o-clovercoverage-falha-e-passa-simultaneamente\/","title":{"rendered":"Quando o CloverCoverage falha e passa simultaneamente"},"content":{"rendered":"\n<p>J\u00e1 falei sobre as vantagens de usar <strong><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a><\/strong> em <strong><a href=\"https:\/\/tommcfarlin.com\/the-independent-wordpress-developer\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">posts anteriores<\/a><\/strong>. Uma das ferramentas que usamos em projetos no \u00faltimo ano ou mais \u00e9 o <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=\"Quando o CloverCoverage falha e passa simultaneamente\" ><\/a><\/p>\n<p>Foto de Quentin REY no Unsplash<\/p>\n<p>Algum tempo entre quando come\u00e7amos a us\u00e1-lo e esta semana, ele sempre falhava ao executar todas as vezes na minha m\u00e1quina local, mas n\u00e3o na m\u00e1quina na qual est\u00e1vamos implantando nosso c\u00f3digo.<\/p>\n<p>E n\u00e3o, n\u00e3o foi porque havia diretivas ou coment\u00e1rios incorretos nos testes de unidade e n\u00e3o foi porque o <strong><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPUnit<\/a><\/strong> estava mal configurado (estava executando todos os testes e relatando-os como esperado).<\/p>\n<p>Ent\u00e3o o que d\u00e1?<\/p>\n<h2>Quando o CloverCoverage falha<\/h2>\n<p>A vers\u00e3o TL;DR disso:<\/p>\n<p>Voc\u00ea precisa ter o <strong><a href=\"https:\/\/xdebug.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Xdebug<\/a><\/strong> instalado corretamente porque o CloverCoverage requer um driver \u2013 ou seja, o Xdebug \u2013 para ser executado corretamente. O problema \u00e9 que, se voc\u00ea estiver usando o <strong><a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Homebrew<\/a><\/strong>, n\u00e3o poder\u00e1 instal\u00e1-lo como poder\u00edamos de uma s\u00f3 vez.<\/p>\n<p>O restante deste post ir\u00e1 gui\u00e1-lo atrav\u00e9s da instala\u00e7\u00e3o do Xdebug, configurando-o corretamente dentro de sua configura\u00e7\u00e3o do PHP, configurando sua configura\u00e7\u00e3o do PHPUnit corretamente e, em seguida, verificando tudo para que, na pr\u00f3xima vez que voc\u00ea executar o GrumPHP, voc\u00ea receba todas as marcas de sele\u00e7\u00e3o verdes .<\/p>\n<p>E, como um b\u00f4nus adicional, da pr\u00f3xima vez que voc\u00ea executar o PHPUnit, voc\u00ea deve obter um relat\u00f3rio de boa apar\u00eancia para acompanhar isso. Aqui est\u00e1 o que voc\u00ea precisa fazer.<\/p>\n<p>Primeiro, observe que isso se baseia na ideia de que voc\u00ea:<\/p>\n<ul>\n<li>usando Homebrew,<\/li>\n<li>ter PHPUnit instalado,<\/li>\n<li>ter o PHP 7.1 instalado (estou usando o PHP 7.1.19 no momento em que escrevo este post),<\/li>\n<li>n\u00e3o tem o Clover sendo executado corretamente.<\/li>\n<\/ul>\n<p>Para verificar algumas coisas, execute o seguinte comando <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-00-phpunit-version-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">no terminal<\/a><\/strong> :<\/p>\n<p>Certifique-se de estar executando pelo menos o 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=\"Quando o CloverCoverage falha e passa simultaneamente\" ><\/a><\/p>\n<p>Em seguida, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-01-php-version-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">verifique sua vers\u00e3o do PHP<\/a><\/strong> :<\/p>\n<p>E certifique-se de estar executando pelo menos o PHP 7.1.19 (sua sa\u00edda n\u00e3o se parece exatamente com a minha, especialmente no que se refere ao Xdebug, mas esse \u00e9 o objetivo deste ponto).<\/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=\"Quando o CloverCoverage falha e passa simultaneamente\" ><\/a><\/p>\n<p>Neste ponto, estamos prontos para instalar o Xdebug e come\u00e7ar a fazer as altera\u00e7\u00f5es de configura\u00e7\u00e3o necess\u00e1rias.<\/p>\n<h3>1 Instale o Xdebug<\/h3>\n<p>A raz\u00e3o pela qual temos que instalar o Xdebug de forma diferente de antes \u00e9 que ele n\u00e3o \u00e9 mais suportado pelo Homebrew. N\u00e3o se preocupe, pois \u00e9 t\u00e3o f\u00e1cil de instalar via <strong><a href=\"https:\/\/pecl.php.net\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pecl<\/a><\/strong>.<\/p>\n<p>Para instal\u00e1-lo, digite <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-02-install-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">o seguinte comando<\/a><\/strong> no seu terminal:<\/p>\n<p>Voc\u00ea dever\u00e1 ver uma mensagem informando que ele foi instalado e que a extens\u00e3o foi adicionada ao seu arquivo de configura\u00e7\u00e3o PHP. Na minha experi\u00eancia, Pecl n\u00e3o acerta a \u00faltima etapa.<\/p>\n<h3>2 Localize o bin\u00e1rio Xdebug no disco<\/h3>\n<p>Para resolver isso, precisamos:<\/p>\n<ol>\n<li>localize o caminho completo da extens\u00e3o Xdebug,<\/li>\n<li>coloque o caminho totalmente qualificado para a extens\u00e3o em nosso arquivo de configura\u00e7\u00e3o PHP<\/li>\n<\/ol>\n<p>Para encontrar os caminhos nos quais o Xdebug pode residir, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-04-find-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">use o seguinte comando<\/a><\/strong> :<\/p>\n<p>Voc\u00ea pode obter v\u00e1rios caminhos retornados (idealmente, por\u00e9m, voc\u00ea deve obter apenas um). Se voc\u00ea obtiver mais de um, procure aquele instalado no caminho que cont\u00e9m o diret\u00f3rio Pecl. <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-05-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Provavelmente ser\u00e1 algo assim<\/a><\/strong> :<\/p>\n<pre><code>\/usr\/local\/lib\/php\/pecl\/20160303\/xdebug.so<\/code><\/pre>\n<p>Depois de obter uma lista de todos os locais\u00a0 onde o <strong>Xdebug.so<\/strong> est\u00e1 instalado, copie o caminho do arquivo para que possamos configurar o PHP para referenci\u00e1-lo e us\u00e1-lo corretamente.<\/p>\n<h3>3 Atualizar a configura\u00e7\u00e3o do PHP<\/h3>\n<p>Em seguida, precisamos atualizar a configura\u00e7\u00e3o do PHP. Fazer isso \u00e9 f\u00e1cil, pois simplesmente precisamos adicionar uma \u00fanica linha ao arquivo PHP.ini. Claro, se voc\u00ea tiver v\u00e1rias vers\u00f5es do PHP em execu\u00e7\u00e3o, certifique-se de adicionar isso ao arquivo de configura\u00e7\u00e3o adequado depender\u00e1 da vers\u00e3o do PHP que voc\u00ea est\u00e1 executando.<\/p>\n<p>Se voc\u00ea tiver v\u00e1rias vers\u00f5es do PHP em execu\u00e7\u00e3o em sua m\u00e1quina, ter\u00e1 v\u00e1rias vers\u00f5es do arquivo de configura\u00e7\u00e3o do PHP. Se voc\u00ea tiver uma \u00fanica vers\u00e3o instalada, ter\u00e1 um \u00fanico\u00a0 arquivo <strong>php.ini<\/strong>.<\/p>\n<p>Isso normalmente est\u00e1 localizado em <strong>\/usr\/local\/etc\/php\/7.1\/<\/strong> como <strong>php.ini\u00a0<\/strong> se voc\u00ea estiver usando PHP 7.1, mas sua localiza\u00e7\u00e3o pode ser um pouco diferente. Mas o passo seguinte continua o mesmo.<\/p>\n<p>Depois de fazer isso, certifique-se de adicionar a seguinte linha ao\u00a0 arquivo <strong>php.ini\u00a0<\/strong>. Isso pode estar em qualquer lugar no arquivo, mas lembre-se de que voc\u00ea precisa incluir o caminho totalmente qualificado para Xdebug.so. Portanto, o arquivo deve <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-06-php-ini\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">incluir esta linha<\/a><\/strong> :<\/p>\n<pre><code>zend_extension=\"\/usr\/local\/lib\/php\/pecl\/20160303\/xdebug.so\"<\/code><\/pre>\n<p>A partir da\u00ed, tudo deve funcionar. Voc\u00ea pode verificar isso <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-07-verify-xdebug-installation-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">executando<\/a><\/strong> :<\/p>\n<p>E ent\u00e3o voc\u00ea deve ver a seguinte mensagem:<\/p>\n<blockquote>\n<p>PHP 7.1.19 (cli) (criado: 25 de junho de 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, por Derick Rethans<br \/>\ncom Zend OPcache v7.1.19, Copyright (c) 1999-2018, por Zend Technologies<\/p>\n<\/blockquote>\n<p>Observe a quarta linha que inclui uma observa\u00e7\u00e3o sobre o Xdebug. Se voc\u00ea ver isso, ent\u00e3o voc\u00ea est\u00e1 pronto para ir.<\/p>\n<h3>4 Configurando o PHPUnit<\/h3>\n<p>Neste ponto, a \u00faltima coisa que voc\u00ea precisa fazer \u00e9 certificar-se de que seu arquivo phpunit.xml est\u00e1 configurado corretamente. <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-08-phpunit-xml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Aqui est\u00e1 um exemplo simples<\/a><\/strong> de como \u00e9 o meu (isso inclui suporte para Clover tamb\u00e9m):<\/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>Em seguida, voc\u00ea pode executar manualmente o PHPUnit e ver uma boa sa\u00edda de cobertura de c\u00f3digo.<\/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=\"Quando o CloverCoverage falha e passa simultaneamente\" ><\/a><\/p>\n<p>Ou voc\u00ea pode executar o GrumPHP para ver a marca de sele\u00e7\u00e3o verde s\u00f3lida (assumindo que seus testes est\u00e3o dentro do intervalo que voc\u00ea definiu em <strong>grump.yml<\/strong> ).<\/p>\n<h2>O resultado final<\/h2>\n<p>Embora possa parecer muitas etapas (e suponho que seja), n\u00e3o demora muito para que essa configura\u00e7\u00e3o seja executada corretamente. Espero que o passo a passo acima economize um pouco de tempo ao trabalhar com PHP, PHPUnit e assim por diante quando o CloverCoverage falhar (e for bem-sucedido simultaneamente durante a implanta\u00e7\u00e3o cont\u00ednua).<\/p>\n<p>Atualmente estou escrevendo um eBook (junto com uma variedade de outros conte\u00fados premium). Se voc\u00ea estiver interessado, <a href=\"https:\/\/tommcfarlin.com\/registration-info\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">confira o que voc\u00ea recebe<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O passo a passo a seguir deve economizar um pouco de tempo ao trabalhar com PHP, PHPUnit e assim por diante quando o CloverCoverage falhar (e for bem-sucedido simultaneamente durante a implanta\u00e7\u00e3o cont\u00ednua) para que voc\u00ea saiba o que est\u00e1 fazendo para que o PHPUnit e o Clover sejam executados corretamente em seu sistema .<\/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":[806],"tags":[1170],"class_list":["post-230795","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/230795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=230795"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/230795\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/162831"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=230795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=230795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=230795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}