✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

När CloverCoverage misslyckas och går över samtidigt

20

Jag har pratat om fördelarna med att använda GrumPHP i tidigare inlägg. Ett av verktygen som vi har använt i projekt under det senaste året eller mer är Clover.

När CloverCoverage misslyckas och går över samtidigt

Foto av Quentin REY på Unsplash

En tid mellan när vi började använda det och denna vecka, skulle det alltid misslyckas med att köras varje gång på min lokala dator men inte på den maskin som vi distribuerade vår kod till.

Och nej, det berodde inte på att det fanns felaktiga direktiv eller kommentarer i enhetstesterna och det var inte för att PHPUnit var felkonfigurerat (det körde alla tester och rapporterade dem som förväntat).

Så vad ger?

När CloverCoverage misslyckas

TL;DR-versionen av detta:

Du måste ha Xdebug korrekt installerat eftersom CloverCoverage kräver en drivrutin – det vill säga Xdebug – för att köras korrekt. Problemet är att om du använder Homebrew kan du inte installera det som vi kunde på en gång.

Resten av det här inlägget kommer att leda dig genom att installera Xdebug, konfigurera det korrekt i din PHP-konfiguration, ställa in din PHPUnit-konfiguration på rätt sätt och sedan verifiera att allt checkar ut så nästa gång du kör GrumPHP bör du få alla gröna bockar .

Och, som en extra bonus, nästa gång du kör PHPUnit, bör du få en snygg rapport för att gå med på det. Här är vad du behöver göra.

Observera först att detta bygger på tanken att du är:

  • använder Homebrew,
  • har PHPUnit installerat,
  • har PHP 7.1 installerat (jag använder PHP 7.1.19 när jag skriver detta inlägg),
  • inte har Clover att köra ordentligt.

För att verifiera några saker, kör följande kommando i terminalen :

Se till att du kör minst PHPUnit 7.1.4.

När CloverCoverage misslyckas och går över samtidigt

Kontrollera sedan din PHP-version :

Och se till att du kör åtminstone PHP 7.1.19 (din utdata gör att det inte ser exakt likadant ut som mitt, särskilt när det gäller Xdebug, men det är poängen med denna punkt).

När CloverCoverage misslyckas och går över samtidigt

Vid det här laget är vi redo att installera Xdebug och börja göra de nödvändiga konfigurationsändringarna.

1 Installera Xdebug

Anledningen till att vi måste installera Xdebug annorlunda än tidigare är att det inte längre stöds av Homebrew. Inga bekymmer dock, eftersom det är lika enkelt att installera via Pecl.

För att installera det, skriv in följande kommando i din terminal:

Du bör då se ett meddelande om att det har installerats och att tillägget har lagts till i din PHP-konfigurationsfil. Enligt min erfarenhet får Pecl inte det senare steget korrekt.

2 Leta reda på Xdebug Binary på disken

För att lösa detta måste vi:

  1. hitta den fullständiga sökvägen till Xdebug-tillägget,
  2. placera den fullständigt kvalificerade sökvägen till tillägget i vår PHP-konfigurationsfil

För att hitta sökvägarna där Xdebug kan finnas, använd följande kommando :

Du kan få flera sökvägar tillbaka (helst bör du dock bara få en). Om du får mer än en, leta efter den som är installerad i sökvägen som innehåller Pecl-katalogen. Det kommer troligen att se ut ungefär så här :

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

När du får en lista över alla platser som Xdebug.so är installerad, kopiera sökvägen till filen så att vi kan konfigurera PHP för att referera till den och använda den på rätt sätt.

3 Uppdatera PHPs konfiguration

Därefter måste vi uppdatera PHPs konfiguration. Att göra detta är enkelt eftersom vi helt enkelt behöver lägga till en enda rad i filen PHP.ini. Naturligtvis, om du har flera versioner av PHP som körs, kommer att se till att du lägger till detta i rätt konfigurationsfil beroende på vilken version av PHP du kör.

Om du har flera versioner av PHP som körs på din maskin, kommer du att ha flera versioner av PHP-konfigurationsfilen. Om du har en enda version installerad, kommer du att ha en enda php.ini -fil.

Detta finns vanligtvis i /usr/local/etc/php/7.1/ som php.ini  om du använder PHP 7.1 men din plats kan vara något annorlunda. Men steget att följa förblir detsamma.

När du har gjort detta, se till att du lägger till följande rad i  filen php.ini . Detta kan vara var som helst i filen, egentligen, men kom ihåg att du måste inkludera den fullt kvalificerade sökvägen till Xdebug.so. Så filen bör innehålla denna rad :

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

Därifrån borde allt fungera. Du kan verifiera detta genom att köra :

Och då bör du se följande meddelande:

PHP 7.1.19 (cli) (byggd: Jun 25 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, av Derick Rethans
med Zend OPcache v7.1.19, Copyright (c) 1999-2018, av Zend Technologies

Notera den fjärde raden som innehåller en anteckning om Xdebug. Om du ser detta är du bra att gå.

4 Konfigurera PHPUnit

Vid det här laget är det sista du behöver göra att se till att filen phpunit.xml är korrekt konfigurerad. Här är ett enkelt exempel på hur min ser ut (detta inkluderar även stöd för 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>

Därefter kan du köra PHPUnit manuellt och se en bra utdata av kodtäckning.

När CloverCoverage misslyckas och går över samtidigt

Eller så kan du köra GrumPHP för att se den fasta gröna bocken (förutsatt att dina tester ligger inom det intervall som du har definierat i grump.yml ).

Slutresultatet

Även om det kan verka som många steg (och jag antar att det är det), tar det inte lång tid att få den här installationen och att fungera ordentligt. Förhoppningsvis kommer genomgången ovan att spara dig lite tid när du arbetar med PHP, PHPUnit och så vidare när CloverCoverage misslyckas (och lyckas samtidigt under kontinuerlig driftsättning).

Jag håller för närvarande på att skriva en e-bok (tillsammans med en mängd annat premiuminnehåll). Om du är intresserad, kolla in vad du får.

Inspelningskälla: tommcfarlin.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer