Einfacher Weg um deine Extension auf TravisCI zu testen

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Einfacher Weg um deine Extension auf TravisCI zu testen

Beitrag von nickvergessen »

Source Acme/Demo :: Wiki :: How to test your extension with phpunit and TravisCI
  1. Gehe auf dein Travis Profil, Synchronisiere die Liste der Repositories, Aktiviere Travis für das Repository deiner Extension
  2. Kopiere die folgenden Dateien aus der ACME Demo Extensions:
    • travis/prepare-phpbb.sh
    • .travis.yml
    • phpunit.xml.dist
  3. Bearbeite .travis.yml
  4. Fertig! Jetzt kannst du deine Tests schreiben.
Deinen Code automatisch zu testen hilft dir, die gleichen Fehler nicht immer wieder zu machen.

Um die Tests lokal auszuführen, musst du phpBB aus dem Git Repository installieren. Danach musst du den folgenden Befehl aus dem Root-Verzeichnis des phpBB Git Repository's ausführen:

Windows:

Code: Alles auswählen

phpBB\vendor\bin\phpunit.bat -c phpBB\ext\acme\demo\phpunit.xml.dist
andere Betriebsysteme:

Code: Alles auswählen

phpBB/vendor/bin/phpunit -c phpBB/ext/acme/demo/phpunit.xml.dist
kein Support per PN
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Einfacher Weg um deine Extension auf TravisCI zu testen

Beitrag von gn#36 »

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

Code: Alles auswählen

- EXTNAME="..."
- GITREPO="..."
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:

Code: Alles auswählen

    - php: 7.1
      env: DB=none;LANGTEST=1;NOTESTS=1
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.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „Extension Bastelstube“