© S&S Media/SIbel Sarli
Wie man Tests für PHP schreibt - in PHP

PHP Core erweitern - Test für Test


Im September 2000 begann ich meine Berufsausbildung bei einer Internetagentur, die aus zwei Teams bestand: eines für JavaServer Pages, eines für PHP. Ich wurde dem PHP-Team zugeteilt, und als mir die Sprache vorgestellt wurde, dachte ich mir: Niemand wird diese Sprache jemals nutzen! Ich hätte mich nicht stärker täuschen können. Heute ist meine gesamte Karriere auf PHP aufgebaut, und ich möchte der Community etwas zurückzugeben. Wie? Indem ich Tests für den PHP Core schreibe. Dieser Artikel zeigt, wie einfach das ist und wie Sie davon profitieren.

Bevor wir unseren ersten eigenen Test für den PHP Core schreiben, wollen wir uns anschauen, wie man bereits existierende Tests ausführen kann. Dafür laden wir uns den PHP-Quellcode von GitHub herunter und kompilieren ihn:

$ git clone git@github.com:php/php-src.git $ cd php-src $ ./buildconf $ ./configure --with-zlib $ make -j `nproc`

Es empfiehlt sich, vorher einen Fork anzulegen. Das macht es später leichter, einen Pull Request zu stellen. Falls noch kein Compiler oder keine Build-Tools auf dem Linux-System installiert sind, lässt sich dies mit der development-tools-Gruppe unter Fedora bzw. den build-essentials unter Debian Linux nachholen. Es kann vorkommen, dass die Anweisung ./configure einen Fehler wirft. Das passiert üblicherweise, wenn Anforderungen für den Build nicht erfüllt sind. Dann installiert man einfach die fehlenden Komponenten und startet den Vorgang erneut.

Beachten muss man dabei, unbedingt die Development Packages zu installieren. Ich hatte beispielsweise den Fall, dass das configure-Skript ein fehlendes libxml monierte, obwohl es bereits installiert war. Was tatsächlich fehlte, waren die Headerdateien, die sich nur in den Development Packages befinden. Erkennen kann man Development Packages normalerweise an dem Suffix dev oder devel. Auch das --with-zlib ist in unserem Fall zwingend, da wir die zlib Extension für den Test, den wir schreiben wollen, benötigen. Sie ist nicht standardmäßig im Build enthalten.

Ist der Build erfolgreich erstellt, findet man die PHP Binaries in ./sapi/cli/php. Schauen wir uns an, was wir gerade erzeugt haben:

$ ./sapi/cli/php –v PHP 8.0.0-dev (cli) (built: Jul 14 2020 21:05:42) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies

Wir haben ein frisch gebautes und laufendes PHP Binary. Damit ist es an der Zeit, die Tests auszuführen, die sich im GitHub Repository befinden (Listing 1). Seit PHP 7.4 können die Tests parallel a...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang