Um alle möglichen Mojolicious, Dancer, Dancer2 und Catalyst Plugins zu testen, wurde eine kleine Anwendung geschrieben, so dass ich mittlerweile bei über 1 Millionen übermittelten CPAN-Tests bin.
Tests waren nicht das Ziel... ● Die Tests sind nur ein Nebenprodukt der Arbeit. ● Das eigentliche Ziel ist ein ganz anderes ● Ich werde hier einige markante Wegstellen zeigen ● Das eigentliche Ziel war...
Task::MojoliciousPlugins::PerlAcademy ● Task::-Module nur Auflistung von Abhängigkeiten ● In diesem Falle alle funktionsfähigen Mojolicious-Plugins auf Schulungsrechner installieren
Probleme ● Welche Plugins gibt es? ● Welche funktionieren mit der aktuellen Mojolicious-Version? ● Welche funktionieren mit der aktuellen Perl- Version?
Meta::CPAN ● Auslesen welche Mojolicious-Plugins es gibt ● Welche Versionen sind aktuell? ● Unter welcher URL sind die zu finden? ● 02packages.txt.gz ● MetaCPAN::Client
my $url = 'http://www.cpan.org/modules/' . '02packages.details.txt.gz'; getstore $url, '/tmp/test.txt.gz'; my $parser = Parse::CPAN::Packages->new( '/tmp/test.txt.gz' ); my @distributions = $parser->latest_distributions; my %modules; for my $dist ( @distributions ) { my $name = $dist->dist; next if $name !~ m!^Mojo (?:X|licious)?-!x; my $version = $dist->version; $modules{$name} = $version; }
Zwischenstopp ● Es sind jetzt alle Plugins bekannt ● Und können mit dem installierten Perl u. Mojolicious getestet werden ● Darstellung auf einer statischen Webseite für einen schnellen Überblick
Probleme ● Wie sieht es mit anderen Perl-Versionen (Developer-Releases, …) aus? ● Es soll nicht jedesmal alles getestet werden (ca. 400 Plugins) auch wenn sich nichts geändert hat.
perlbrew, SQLite ● Mit perlbrew kann man sehr leicht mehrere Perl-Versionen nebeneinander betreiben → Alternative: plenv ● Ausführen von Programmen auf allen installierten Versionen
Zwischenstopp ● Es werden schon frühzeitig Probleme mit zukünftigen Perl-Versionen erkannt ● SQLite ist extrem genial um schnell eine Datenbank aufzubauen. ● Wunsch im #mojo-IRC: Bei Fehlern soll die Fehlermeldung erreichbar sein
Probleme ● Es werden nicht immer die neuesten Versionen der Abhängigkeiten getestet ● Wenn zu viele Module schon installiert sind, fallen Fehler in der Liste der Abhängigkeiten nicht auf → Abhängigkeiten werden nicht aufgelistet, sind aber durch andere Plugins schon installiert
local::lib ● Ermöglicht die Installation von Modulen in komplett eigenständigen Verzeichnissen → Jede Mojolicious-Version wird in ein eigenes Verzeichnis installiert → Jedes Plugin bekommt ein eigenes Verzeichnis, dadurch keine Kenntnis der vorher installierten Plugins
Problem ● Rückmeldungen der CPANTester-Gurus Slaven und Andreas ● „Reportangabe zu Perl-Version passt nicht zu Angabe in den Tests“ ● „Warum schickst Du so viele Testergebnisse“ ● „…“
Github ● Die meisten Plugins sind auf Github, macht das Patchen sehr einfach – Wer einen Account hat, kann auf das Repo gehen, auf Bearbeiten klicken, speichern, PullRequest erstellen ● Einige PullRequests wurden innerhalb von „Sekunden“ angenommen, andere warten sein über einem Jahr...