2009-05-10 10 views
3

Im Moment arbeite ich (nur zum Spaß) an einer Art von Compiler, der PHP-Code bis zu einem Quellcode für eine niedrige Ebene VM bricht.PHP Sprache (Einheit) Tests

Da die Typ-System und viele der PHP-Funktionen sind nicht so logisch, ich brauche eine Menge Testscripts zu überprüfen, dass mein Code verhält sich wie in PHP.

Ich fing an, alles mit dem Test von PHP-Quellen (here) zu testen. Aber viele der Tests sind nicht nur sprachspezifisch, sie enthalten auch einige Funktionen aus dem Umgang mit dem Webserver (POST-Daten, etc.) Gibt es noch andere Tests, um PHP als Sprache zu testen? Am besten wäre es, wenn das Skript selbst in PHP geschrieben wird.

Antwort

0

Ich mag Sie vielleicht missverstehen, aber das könnte das sein, wonach Sie suchen?
http://www.simpletest.org/

Sie haben es entworfen, um wie JUnit zu sein, aber für PHP, nach der Beschreibung.

1

Wenn Sie bestätigen, dass sich Ihre Semantik wie in der Zend-Implementierung von PHP verhält, dann würde ich empfehlen, ein automatisiertes Werkzeug zu erstellen, um Grammatik aus dem BNF von PHP selbst zu generieren. Auf diese Weise hätten Sie viele .php-Dateien, die einen Großteil der Semantik ausdrücken. Achten Sie darauf, dass Sie in den generierten Dateien viel Trace-Code angeben.

Dann führen Sie es durch die Zend-Implementierung und Ihre, um sicherzustellen, dass Sie die gleiche Validierung erhalten. Verwenden Sie eine beschädigte Codegenerierung, um sicherzustellen, dass Sie sie auch finden. Nur wenn Sie wissen, dass Ihre Implementierung korrekt ist (mit Macken), können Sie weitermachen.

http://llvm.org/devmtg/2008-08/Lopes_PHP-JIT-InTwoDays.pdf könnte helfen. Schauen Sie sich Leute an, die einen PHP JIT für LLVM erstellen. Kann einige Informationen darüber liefern, wie sie die Gültigkeit der Sprachsyntax und -semantik gegenüber einer vorhandenen Implementierung testen.