✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Quando o CloverCoverage falha e passa simultaneamente

18

Já falei sobre as vantagens de usar GrumPHP em posts anteriores. Uma das ferramentas que usamos em projetos no último ano ou mais é o Clover.

Quando o CloverCoverage falha e passa simultaneamente

Foto de Quentin REY no Unsplash

Algum tempo entre quando começamos a usá-lo e esta semana, ele sempre falhava ao executar todas as vezes na minha máquina local, mas não na máquina na qual estávamos implantando nosso código.

E não, não foi porque havia diretivas ou comentários incorretos nos testes de unidade e não foi porque o PHPUnit estava mal configurado (estava executando todos os testes e relatando-os como esperado).

Então o que dá?

Quando o CloverCoverage falha

A versão TL;DR disso:

Você precisa ter o Xdebug instalado corretamente porque o CloverCoverage requer um driver – ou seja, o Xdebug – para ser executado corretamente. O problema é que, se você estiver usando o Homebrew, não poderá instalá-lo como poderíamos de uma só vez.

O restante deste post irá guiá-lo através da instalação do Xdebug, configurando-o corretamente dentro de sua configuração do PHP, configurando sua configuração do PHPUnit corretamente e, em seguida, verificando tudo para que, na próxima vez que você executar o GrumPHP, você receba todas as marcas de seleção verdes .

E, como um bônus adicional, da próxima vez que você executar o PHPUnit, você deve obter um relatório de boa aparência para acompanhar isso. Aqui está o que você precisa fazer.

Primeiro, observe que isso se baseia na ideia de que você:

  • usando Homebrew,
  • ter PHPUnit instalado,
  • ter o PHP 7.1 instalado (estou usando o PHP 7.1.19 no momento em que escrevo este post),
  • não tem o Clover sendo executado corretamente.

Para verificar algumas coisas, execute o seguinte comando no terminal :

Certifique-se de estar executando pelo menos o PHPUnit 7.1.4.

Quando o CloverCoverage falha e passa simultaneamente

Em seguida, verifique sua versão do PHP :

E certifique-se de estar executando pelo menos o PHP 7.1.19 (sua saída não se parece exatamente com a minha, especialmente no que se refere ao Xdebug, mas esse é o objetivo deste ponto).

Quando o CloverCoverage falha e passa simultaneamente

Neste ponto, estamos prontos para instalar o Xdebug e começar a fazer as alterações de configuração necessárias.

1 Instale o Xdebug

A razão pela qual temos que instalar o Xdebug de forma diferente de antes é que ele não é mais suportado pelo Homebrew. Não se preocupe, pois é tão fácil de instalar via Pecl.

Para instalá-lo, digite o seguinte comando no seu terminal:

Você deverá ver uma mensagem informando que ele foi instalado e que a extensão foi adicionada ao seu arquivo de configuração PHP. Na minha experiência, Pecl não acerta a última etapa.

2 Localize o binário Xdebug no disco

Para resolver isso, precisamos:

  1. localize o caminho completo da extensão Xdebug,
  2. coloque o caminho totalmente qualificado para a extensão em nosso arquivo de configuração PHP

Para encontrar os caminhos nos quais o Xdebug pode residir, use o seguinte comando :

Você pode obter vários caminhos retornados (idealmente, porém, você deve obter apenas um). Se você obtiver mais de um, procure aquele instalado no caminho que contém o diretório Pecl. Provavelmente será algo assim :

/usr/local/lib/php/pecl/20160303/xdebug.so

Depois de obter uma lista de todos os locais  onde o Xdebug.so está instalado, copie o caminho do arquivo para que possamos configurar o PHP para referenciá-lo e usá-lo corretamente.

3 Atualizar a configuração do PHP

Em seguida, precisamos atualizar a configuração do PHP. Fazer isso é fácil, pois simplesmente precisamos adicionar uma única linha ao arquivo PHP.ini. Claro, se você tiver várias versões do PHP em execução, certifique-se de adicionar isso ao arquivo de configuração adequado dependerá da versão do PHP que você está executando.

Se você tiver várias versões do PHP em execução em sua máquina, terá várias versões do arquivo de configuração do PHP. Se você tiver uma única versão instalada, terá um único  arquivo php.ini.

Isso normalmente está localizado em /usr/local/etc/php/7.1/ como php.ini  se você estiver usando PHP 7.1, mas sua localização pode ser um pouco diferente. Mas o passo seguinte continua o mesmo.

Depois de fazer isso, certifique-se de adicionar a seguinte linha ao  arquivo php.ini . Isso pode estar em qualquer lugar no arquivo, mas lembre-se de que você precisa incluir o caminho totalmente qualificado para Xdebug.so. Portanto, o arquivo deve incluir esta linha :

zend_extension="/usr/local/lib/php/pecl/20160303/xdebug.so"

A partir daí, tudo deve funcionar. Você pode verificar isso executando :

E então você deve ver a seguinte mensagem:

PHP 7.1.19 (cli) (criado: 25 de junho de 2018 10:42:21) (NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2 .6.0, Copyright (c) 2002-2018, por Derick Rethans
com Zend OPcache v7.1.19, Copyright (c) 1999-2018, por Zend Technologies

Observe a quarta linha que inclui uma observação sobre o Xdebug. Se você ver isso, então você está pronto para ir.

4 Configurando o PHPUnit

Neste ponto, a última coisa que você precisa fazer é certificar-se de que seu arquivo phpunit.xml está configurado corretamente. Aqui está um exemplo simples de como é o meu (isso inclui suporte para Clover também):

<?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>

Em seguida, você pode executar manualmente o PHPUnit e ver uma boa saída de cobertura de código.

Quando o CloverCoverage falha e passa simultaneamente

Ou você pode executar o GrumPHP para ver a marca de seleção verde sólida (assumindo que seus testes estão dentro do intervalo que você definiu em grump.yml ).

O resultado final

Embora possa parecer muitas etapas (e suponho que seja), não demora muito para que essa configuração 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ção contínua).

Atualmente estou escrevendo um eBook (junto com uma variedade de outros conteúdos premium). Se você estiver interessado, confira o que você recebe.

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação