2015-11-20 7 views
6

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 
+0

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()'? –

+0

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. –

+0

Haben Sie versucht, 'R_LIB_USER' zur Benutzerumgebung hinzuzufügen oder den ersten (temporären) Ordner zu entfernen? –

Antwort

0

Try testthat im Suggests: Bereich der DESCRIPTION Zugabe. Mit R CMD CHECK werden nur die in dieser Datei genannten Pakete bei einer Prüfung berücksichtigt.

+0

'testthat' steht in' DESCRIPTION'. Ich denke, dass R in der Lage ist, "testthat" zu finden, aber nicht in der Lage, mein Paket zu finden, aber nur, wenn ich die RStudio-Verknüpfung verwende. Wenn ich es "von Hand" starte, werden die Tests gefunden und ausgeführt. –

+0

Dann ist es wahrscheinlich ein RStudio-Bug, der auf ihrem GitHub abgelegt werden sollte. – lionel

0

Sie scheinen die Linie

library(foo) 

In Ihrem testthat Datei zu vergessen. Wenn ich mir ein paar renowned examples anschaue, tun sie es so

Verwandte Themen