Wir versuchen, dem Caret-Paket einige Komponententests hinzuzufügen, die von travis, nicht aber von CRAN ausgeführt werden. Dies spart Bauzeit bei CRAN und reduziert die Anzahl der Abhängigkeiten, die sie installieren müssen, um unser Paket zu überprüfen, während wir eine vollständigere Testsuite auf travis ausführen können.
Ich dachte, ich könnte einfach die Anforderungen für den Test mit der r_packages:
-Zeile in meinem travis installieren .yml-Datei :
Meine NOT_CRAN=TRUE
Builds funktionieren jedoch immer noch nicht . (NOT_CRAN = FALSE
läuft gut, da die problematischen Tests übersprungen werden)
Das ist wirklich seltsam, wie , wenn ich mir die Build-Logs anschaue sehe ich, dass Travis alle benötigten Pakete erfolgreich installiert:
%Vor%Aber wenn meine Tests von diesen Paketen abhängen, kann R sie nicht finden:
%Vor%(Ich denke) die relevante Zeile des Codes ist hier in Caret's Quellcode :
%Vor% Warum kann die Funktion find.package
keine von travis installierten Pakete finden? Gehen sie irgendwo in eine spezielle, separate Bibliothek?
Beim Testen Ihres Pakets auf Travis scheint R CMD check
nach installierten Paketen am falschen Ort zu suchen.
Ich habe ein kleines Testpaket erstellt, um das herauszufinden:
Wenn Sie das Paket auf Travis mit R CMD check
testen, enthält .libPaths()
:
Wenn Sie das Paket auf Travis mit devtools::test()
testen, enthält .libPaths()
:
Standardmäßig werden R
Pakete auf Travis in /usr/local/lib/R/site-library
installiert (d. h. der erste Eintrag von .libPaths()
). Offensichtlich sucht R CMD check
an der / den falschen Stelle (n).
Im Prinzip könnten wir das Argument --library
für R CMD check
verwenden, um auf den richtigen Platz zu zeigen. Wenn Sie jedoch --as-cran
verwenden, wird --library
standardmäßig auf /usr/lib/R/library
gesetzt.
Die einfachste Lösung ist wahrscheinlich, alle Pakete (insbesondere die "zusätzlichen" Pakete ROSE
und DMwR
) in /usr/lib/R/library
zu installieren. Es gibt viele Möglichkeiten, dies zu tun. Eine Lösung ist das Hinzufügen von
zum before_install
-Abschnitt Ihrer .travis.yml
-Datei.
Sie könnten das r-travis Repo klonen und nur von Ihrer Kopie beziehen. Das würde es dir erlauben, es weniger ausführlich zu machen.
Was "Pakete nicht gefunden" betrifft: weiß ich nicht. Aber die Travis-Instanz ist eine Vanilla-Ubuntu-Installation, so dass Sie Dinge steuern können, indem Sie in ein geeignetes ~/.Rprofile
etc pp. Echo einfügen. Ich habe das alte r-travis-Setup gefunden um für mich bequemer zu sein und habe kürzlich über eine Möglichkeit gebloggt, die Testzeiten drastisch zu verkürzen , indem ich mich darauf berufe mehr zu vordefinierten r-cran-*
.deb-Paketen.
Michael hat in seinem Repo weit über 1000, und Sie könnten auch Ihre eigenen über eine PPA bauen. Wenn es die Zeit erlaubt, schreibe ich vielleicht einen anderen Blog-Eintrag, der genau das beschreibt ...