Da das ganze schon etwas angestaubt ist und ich mich gerade erst wieder damit beschäftigt habe, das auf den aktuellen Stand zu bringen, hier vielleicht noch ein paar Hinweise, was die Tests mit Travis angeht. Die Anleitung von oben gilt weiterhin, allerdings sind die Dateien dort etwas angestaubt.
Wer möchte kann stattdessen einfach eine Konfiguration von
meiner First Post Edit Erweiterung übernehmen, die ich gerade erst auf den aktuellen Stand gebracht habe. In den meisten Fällen müsst ihr hierzu lediglich den Ordner
travis
sowie die Dateien
phpunit.xml.dist
und
.travis.yml
übernehmen, für den Language Test muss außerdem die
license.txt
korrekt sein.
In der
.travis.yml
müsst ihr dann noch die Konfiguration auf eure Erweiterung anpassen, indem ihr die Zeilen
auf eure Bedürfnisse anpasst.
Das führt dann auf eurer Erweiterung folgende Tests in Travis aus:
- EPV
- Konsistenzprüfung eurer Sprachdateien (englisch im Vergleich mit deutsch und falls vorhanden auch für weitere Sprachen)
- Weitere Tests, falls solche im Verzeichnis
tests
eurer Erweiterung liegen, Ausführung auf phpBB 3.3 und in einigen PHP Versionen auch auf 3.2, Ausführung mit mehreren Datenbanken und PHP Versionen.
- Code Sniffer (Syntax check)
- Image ICC check (Bilderprüfung)
Ein meist einfach zu übernehmender Testcase, selbst wenn man sich mit php Unit Test überhaupt nicht auskennt ist dann noch der
Install Test, der im Grunde genommen nur testet, ob sich zum einen die Erweiterung installieren lässt und zum anderen nach der Installation die posting.php noch einen Login zeigt und die viewtopic.php noch was sinnvolles ausgibt. Hier muss nur der Namespace korrigiert werden und der Name der Erweiterung, der in der Methode
setup_extensions
zurückgeliefert wird (was in meinen Augen normalerweise bei so ziemlich jeder Ext immer klappen sollte, es sei denn es handelt sich um eine Paywall oder sowas).
Mit relativ wenig zusätzlichem Aufwand könnte auch noch geprüft werden, ob der Login noch geht, denn das phpBB Test Framework stellt da in den Funktionalen Tests auch noch eine einfache Methode für bereit (
$this->login();
loggt während eines funktionalen Tests den Testuser ein).
Wenn ihr einen Fehler bei der Ausführung auf Travis bekommt, der bei der Ausführung dieser Zeile auftritt:
Code: Alles auswählen
- sh -c "if [ '$LANGTEST' = '1' ]; then composer remove phpbb/epv --dev --no-interaction; fi"
Dann braucht ihr diese Zeile möglicherweise nicht, weil ihr epv vielleicht bisher nicht als Entwicklungsabhängigkeit in eurer composer.json definiert habt. In dem Fall könnt ihr die Zeile einfach löschen.
Zu dem Sprachtest sei noch gesagt, dass dieser für den Test ein paar Ergänzungen zu eurem Sprachordner durchführt um eine vollständige phpBB Übersetzung zu simulieren. Unter anderem nimmt dieser an, dass die Pluralregel 3 zutrifft (
'PLURAL_RULE' => 3,
), das kann, muss aber nicht für alle Sprachen stimmen die ihr so in eurer Ext habt (insbesondere ist es auch
für Deutsch falsch, hier würde Regel 1 zutreffen (genau wie für Englisch), Französisch hätte Regel 2, Regel 3 steht nur drin, weil ich in einer Ext aus anderen Gründen ein Array der entsprechenden Größe habe). Wenn ihr keine Pluralarrays in euren Sprachdateien verwendet ist das kein Problem, falls doch kann es sein, dass der Test unberechtigt fehlschlägt.
Mehr zu Pluralregeln in den Sprachdateien. Falls ihr hier was ändern wollt solltet ihr euch mal das Skript
travis/prepare-langtest.sh anschauen, dass die Regeln als common.php in die Sprachordner legt und den Wert dort ggf. anpassen (evtl. sogar dynamisch machen). Wenn ihr schon eine Sprachdatei namens common.php habt, geht das natürlich auch schief...
So wie er ist war der Test für mich schon sehr nützlich, weil er grundlegende Fehler wie z.B. komplett fehlende Übersetzungsvariablen finden kann, was recht leicht passiert, wenn man bei der Entwicklung nur mit einer von mehreren Sprachen arbeitet (z.B. nur Deutsch oder nur Englisch).
Falls ihr den Sprachtest nicht braucht entfernt einfach diese Zeilen aus der travis.yml:
Noch ein Hinweis für die Dateien im travis Ordner: Die Dateien müssen für Linux ausführbar sein, sonst klappt das mit den Tests auf Travis nicht. Unter Linux solltet ihr also vor dem
git add
einen
chmod +x travis/*
ausführen, unter Windows braucht ihr evtl. ein
git update-index --chmod=+x travis/*
, damit die Dateien ausführbar werden (oder beim ausführen auf der normalen Windows Kommandozeile auch evtl. mit Backslash statt Slash) und anschließend einen (neuen) commit. Mehr Infos dazu gibt's z.B.
hier.