{"id":230411,"date":"2022-12-05T18:50:00","date_gmt":"2022-12-05T15:50:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230411"},"modified":"2022-11-09T22:16:24","modified_gmt":"2022-11-09T19:16:24","slug":"cuando-clovercoverage-falla-y-pasa-simultaneamente","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/cuando-clovercoverage-falla-y-pasa-simultaneamente\/","title":{"rendered":"Cuando CloverCoverage falla y pasa simult\u00e1neamente"},"content":{"rendered":"\n<p>He hablado sobre las ventajas de usar <strong><a href=\"https:\/\/github.com\/phpro\/grumphp\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">GrumPHP<\/a><\/strong> en <strong><a href=\"https:\/\/tommcfarlin.com\/the-independent-wordpress-developer\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">publicaciones anteriores<\/a><\/strong>. Una de las herramientas que hemos utilizado en proyectos durante el \u00faltimo a\u00f1o o m\u00e1s es <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=\"Cuando CloverCoverage falla y pasa simult\u00e1neamente\" ><\/a><\/p>\n<p>Foto de Quentin REY en Unsplash<\/p>\n<p>En alg\u00fan momento entre el momento en que comenzamos a usarlo y esta semana, siempre fallaba al ejecutarse en mi m\u00e1quina local, pero no en la m\u00e1quina en la que est\u00e1bamos implementando nuestro c\u00f3digo.<\/p>\n<p>Y no, no fue porque hubiera directivas o comentarios incorrectos en las pruebas unitarias ni porque <strong><a href=\"https:\/\/phpunit.de\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPUnit<\/a><\/strong> estuviera mal configurado (estaba ejecutando todas las pruebas y report\u00e1ndolas como se esperaba).<\/p>\n<p>Entonces, \u00bfqu\u00e9 da?<\/p>\n<h2>Cuando falla la cobertura de Clover<\/h2>\n<p>La versi\u00f3n TL; DR de esto:<\/p>\n<p>Debe tener <strong><a href=\"https:\/\/xdebug.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Xdebug<\/a><\/strong> correctamente instalado porque CloverCoverage requiere un controlador, es decir, Xdebug, para ejecutarse correctamente. El problema es que si est\u00e1 usando <strong><a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Homebrew<\/a><\/strong>, no puede instalarlo como lo hicimos nosotros en un momento dado.<\/p>\n<p>El resto de esta publicaci\u00f3n lo guiar\u00e1 a trav\u00e9s de la instalaci\u00f3n de Xdebug, la configuraci\u00f3n adecuada dentro de su configuraci\u00f3n de PHP, la configuraci\u00f3n adecuada de su configuraci\u00f3n de PHPUnit y luego la verificaci\u00f3n de todo, de modo que la pr\u00f3xima vez que ejecute GrumPHP, deber\u00eda obtener todas las marcas de verificaci\u00f3n verdes. .<\/p>\n<p>Y, como una ventaja adicional, la pr\u00f3xima vez que ejecute PHPUnit, deber\u00eda obtener un informe atractivo que lo acompa\u00f1e. Esto es lo que debe hacer.<\/p>\n<p>Primero, tenga en cuenta que esto se basa en la idea de que usted es:<\/p>\n<ul>\n<li>usando homebrew,<\/li>\n<li>tener PHPUnit instalado,<\/li>\n<li>tener PHP 7.1 instalado (estoy usando PHP 7.1.19 al momento de escribir esta publicaci\u00f3n),<\/li>\n<li>Clover no se ejecuta correctamente.<\/li>\n<\/ul>\n<p>Para verificar algunas cosas, ejecute el siguiente comando <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-00-phpunit-version-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">en la terminal<\/a><\/strong> :<\/p>\n<p>Aseg\u00farese de ejecutar al menos 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=\"Cuando CloverCoverage falla y pasa simult\u00e1neamente\" ><\/a><\/p>\n<p>A continuaci\u00f3n, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-01-php-version-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">verifique su versi\u00f3n de PHP<\/a><\/strong> :<\/p>\n<p>Y aseg\u00farese de estar ejecutando al menos PHP 7.1.19 (su salida no se ve exactamente como la m\u00eda, especialmente en lo que se refiere a Xdebug, pero ese es el punto de este punto).<\/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=\"Cuando CloverCoverage falla y pasa simult\u00e1neamente\" ><\/a><\/p>\n<p>En este punto, estamos listos para instalar Xdebug y comenzar a realizar los cambios de configuraci\u00f3n necesarios.<\/p>\n<h3>1 Instalar Xdebug<\/h3>\n<p>La raz\u00f3n por la que tenemos que instalar Xdebug de manera diferente que antes es que Homebrew ya no lo admite. Sin embargo, no se preocupe, ya que es igual de f\u00e1cil de instalar a trav\u00e9s de <strong><a href=\"https:\/\/pecl.php.net\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pecl<\/a><\/strong>.<\/p>\n<p>Para instalarlo, ingresa <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-02-install-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">el siguiente comando<\/a><\/strong> en tu terminal:<\/p>\n<p>Luego deber\u00eda ver un mensaje de que se instal\u00f3 y que la extensi\u00f3n se agreg\u00f3 a su archivo de configuraci\u00f3n de PHP. En mi experiencia, Pecl no da el \u00faltimo paso correctamente.<\/p>\n<h3>2 Localice el binario Xdebug en el disco<\/h3>\n<p>Para abordar esto, necesitamos:<\/p>\n<ol>\n<li>busque la ruta completa de la extensi\u00f3n Xdebug,<\/li>\n<li>coloque la ruta completa a la extensi\u00f3n en nuestro archivo de configuraci\u00f3n de PHP<\/li>\n<\/ol>\n<p>Para encontrar las rutas en las que puede residir Xdebug, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-04-find-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">use el siguiente comando<\/a><\/strong> :<\/p>\n<p>Puede obtener varios caminos devueltos (idealmente, sin embargo, solo debe obtener uno). Si obtiene m\u00e1s de uno, busque el instalado en la ruta que contiene el directorio Pecl. <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-05-xdebug-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Es probable que se vea algo como esto<\/a><\/strong> :<\/p>\n<pre><code>\/usr\/local\/lib\/php\/pecl\/20160303\/xdebug.so<\/code><\/pre>\n<p>Una vez que obtenga una lista de todos los lugares\u00a0 donde est\u00e1 instalado <strong>Xdebug.so<\/strong>, copie la ruta del archivo para que podamos configurar PHP para hacer referencia a \u00e9l y usarlo correctamente.<\/p>\n<h3>3 Actualizar la configuraci\u00f3n de PHP<\/h3>\n<p>A continuaci\u00f3n, necesitamos actualizar la configuraci\u00f3n de PHP. Hacer esto es f\u00e1cil ya que simplemente necesitamos agregar una sola l\u00ednea al archivo PHP.ini. Por supuesto, si tiene varias versiones de PHP en ejecuci\u00f3n, asegurarse de agregar esto al archivo de configuraci\u00f3n adecuado depender\u00e1 de la versi\u00f3n de PHP que est\u00e9 ejecutando.<\/p>\n<p>Si tiene varias versiones de PHP ejecut\u00e1ndose en su m\u00e1quina, entonces tendr\u00e1 varias versiones del archivo de configuraci\u00f3n de PHP. Si tiene una sola versi\u00f3n instalada, entonces tendr\u00e1 un solo archivo <strong>php.ini .<\/strong><\/p>\n<p>Por lo general, se encuentra en <strong>\/usr\/local\/etc\/php\/7.1\/<\/strong> como <strong>php.ini\u00a0<\/strong> si est\u00e1 utilizando PHP 7.1, pero su ubicaci\u00f3n puede ser ligeramente diferente. Pero el siguiente paso sigue siendo el mismo.<\/p>\n<p>Una vez que haya hecho esto, aseg\u00farese de agregar la siguiente l\u00ednea al archivo <strong>php.ini\u00a0 .<\/strong> Esto puede estar en cualquier lugar del archivo, pero recuerde que debe incluir la ruta completa a Xdebug.so. Entonces el archivo debe <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-06-php-ini\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">incluir esta l\u00ednea<\/a><\/strong> :<\/p>\n<pre><code>zend_extension=\"\/usr\/local\/lib\/php\/pecl\/20160303\/xdebug.so\"<\/code><\/pre>\n<p>A partir de ah\u00ed, todo deber\u00eda funcionar. Puede verificar esto <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-07-verify-xdebug-installation-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ejecutando<\/a><\/strong> :<\/p>\n<p>Y luego deber\u00edas ver el siguiente mensaje:<\/p>\n<blockquote>\n<p>PHP 7.1.19 (cli) (construido: 25 de junio 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 \/>\ncon Xdebug v2 .6.0, Copyright (c) 2002-2018, por Derick Rethans<br \/>\ncon Zend OPcache v7.1.19, Copyright (c) 1999-2018, por Zend Technologies<\/p>\n<\/blockquote>\n<p>Tenga en cuenta la cuarta l\u00ednea que incluye una nota sobre Xdebug. Si ves esto, entonces est\u00e1s listo para irte.<\/p>\n<h3>4 Configuraci\u00f3n de PHPUnit<\/h3>\n<p>En este punto, lo \u00faltimo que debe hacer es asegurarse de que su archivo phpunit.xml est\u00e9 configurado correctamente. <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/3961df8f30a0117a363f5e9f0271dbd6#file-08-phpunit-xml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Aqu\u00ed hay un ejemplo simple<\/a><\/strong> de c\u00f3mo se ve el m\u00edo (esto tambi\u00e9n incluye soporte para 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>A continuaci\u00f3n, puede ejecutar manualmente PHPUnit y ver un buen resultado 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=\"Cuando CloverCoverage falla y pasa simult\u00e1neamente\" ><\/a><\/p>\n<p>O puede ejecutar GrumPHP para ver la marca de verificaci\u00f3n verde s\u00f3lida (suponiendo que sus pruebas est\u00e9n dentro del rango que defini\u00f3 en <strong>grump.yml<\/strong> ).<\/p>\n<h2>El resultado final<\/h2>\n<p>Aunque parezcan muchos pasos (y supongo que lo son), no se tarda mucho en configurar y ejecutar correctamente. Con suerte, el tutorial anterior le ahorrar\u00e1 un poco de tiempo cuando trabaje con PHP, PHPUnit, etc. cuando CloverCoverage falle (y tenga \u00e9xito simult\u00e1neamente durante la implementaci\u00f3n continua).<\/p>\n<p>Actualmente estoy escribiendo un libro electr\u00f3nico (junto con una variedad de otro contenido premium). Si est\u00e1s interesado, <a href=\"https:\/\/tommcfarlin.com\/registration-info\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">echa un vistazo a lo que obtienes<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El siguiente tutorial deber\u00eda ahorrarle un poco de tiempo cuando trabaja con PHP, PHPUnit, etc. cuando CloverCoverage falla (y tiene \u00e9xito simult\u00e1neamente durante la implementaci\u00f3n continua) para que sepa lo que est\u00e1 haciendo para que PHPUnit y Clover funcionen correctamente en su 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":[800],"tags":[1172],"class_list":["post-230411","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/230411","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=230411"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/230411\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/162831"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=230411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=230411"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=230411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}