Ich verwende das testthat
-Paket, um Tests für mein R-Paket zu schreiben. Ich habe die Anweisungen unter http://r-pkgs.had.co.nz/tests.html (glaube ich) befolgt. Ich verwendeteR-Package-Tests werden nicht gefunden, wenn R CMD-Prüfung ausgeführt wird
devtools::use_testthat()
, um das Testskelett einzurichten. Ich habe eine Testdatei in tests/testthat
erstellt und der Dateiname beginnt mit test
. Wenn ich devtools::test()
oder Ctrl + Shift + T in RStudio ausführen, werden die Tests erfolgreich ausgeführt, aber wenn ich R CMD check
oder Ctrl + Shift + E ausführen, kann testthat
mein Paket nicht finden. Ich erhalte die Fehler
> library(testthat)
>
> test_check("foo")
Loading required package: foo
Error in loadNamespace(name) : there is no package called 'foo'
Calls: test_check ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous>
In addition: Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :
there is no package called 'foo'
Execution halted
ich meine Bibliothek Pfad ändern, indem R_LIBS_SITE
in meiner .Renviron
Datei zu setzen. Ich vermute, dass dies nicht gelesen wird, wenn R CMD check
ausgeführt wird, aber ich denke nicht, dass es einen Unterschied machen sollte.
Wenn ich devtools::check()
von der RStudio-Konsole ausgeführt wird, wird es erfolgreich abgeschlossen (einschließlich Tests), aber das Ausführen von Check in RStudio schlägt fehl.
Ich habe einige Debug zu testthat.R
aus .libPaths()
und andere Bits zu drucken:
> library(testthat)
> .libPaths()
[1] "C:/Users/timk/AppData/Local/Temp/Rtmp841w0b/RLIBS_1790551706"
[2] "C:/Program Files/R/R-3.2.2/library"
> list.files(.libPaths()[1])
[1] "KernSmooth" "MASS" "Matrix" "boot" "class"
[6] "cluster" "crayon" "digest" "foo" "foreign"
[11] "lattice" "magrittr" "memoise" "mgcv" "nlme"
[16] "nnet" "praise" "rpart" "spatial" "stringi"
[21] "stringr" "survival" "testthat"
> list.files(file.path(.libPaths()[1], "foo"))
character(0)
> list.files(file.path(.libPaths()[1], "testthat"))
[1] "CITATION" "DESCRIPTION" "INDEX" "LICENSE" "MD5"
[6] "Meta" "NAMESPACE" "R" "help" "html"
[11] "libs"
Sie, dass das Paketverzeichnis in der temporären Bibliothek erstellt wird, sehen können, aber das Paket leer ist. Vergleichen Sie es mit der Dateiliste für testthat
.
Ich habe auch versucht, ein anderes Paket herunterladen, das testthat
(anonymizer) verwendet und bekomme den gleichen Fehler.
sessionInfo()
:
R version 3.2.2 (2015-08-14)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 8 x64 (build 9200)
locale:
[1] LC_COLLATE=English_Australia.1252 LC_CTYPE=English_Australia.1252 LC_MONETARY=English_Australia.1252
[4] LC_NUMERIC=C LC_TIME=English_Australia.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] foo_0.1 testthat_0.11.0
loaded via a namespace (and not attached):
[1] magrittr_1.5 tools_3.2.2 roxygen2_5.0.0 Rcpp_0.12.1 crayon_1.3.1 memoise_0.2.1 stringi_1.0-1
[8] stringr_1.0.0 digest_0.6.8 devtools_1.9.1
Vor ein paar Tagen habe ich einen Scheck über einen Zweig von 'adegenet' ausgeführt und die ganze Hölle ist verloren gegangen. Nach dem Hinzufügen von 'R_LIBS_USER' zum Benutzerumgebungspfad haben sich die Dinge angesammelt. Was sagt dein '.libPaths()'? –
Eine gute Frage. Ich habe eine Ausgabe hinzugefügt, um die '.libPaths()' und den Inhalt der temporären Bibliothek anzuzeigen. Das Paketverzeichnis wird erstellt, ist jedoch leer. –
Haben Sie versucht, 'R_LIB_USER' zur Benutzerumgebung hinzuzufügen oder den ersten (temporären) Ordner zu entfernen? –