2015-11-20 13 views
6

Używam pakietu testthat do pisania testów dla mojego pakietu R. Postępowałem zgodnie z instrukcjami pod numerem http://r-pkgs.had.co.nz/tests.html (chyba). UżyłemTesty pakietów R nie zostaną znalezione podczas uruchamiania sprawdzania R CMD

do skonfigurowania szkieletu testowego. Stworzyłem plik testowy w tests/testthat, a nazwa pliku zaczyna się od test. Kiedy uruchamiam devtools::test() lub Ctrl + Shift + T w RStudio, testy przebiegają pomyślnie, jednak gdy uruchomię R CMD check lub Ctrl + Shift + E, testthat nie mogę znaleźć mojego pakietu. I pojawia się błąd

> 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 

zrobić zmodyfikować moją ścieżkę biblioteki poprzez ustawienie R_LIBS_SITE w moim pliku .Renviron. Podejrzewam, że nie jest to czytane podczas uruchamiania R CMD check, ale nie sądzę, że powinno to mieć znaczenie.

Po uruchomieniu devtools::check() z konsoli RStudio, kończy się pomyślnie (w tym testy), jednak uruchomienie programu Check in RStudio kończy się niepowodzeniem.

dodałam trochę debugowanie do testthat.R wydrukować .libPaths() i innych bitów:

> 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" 

Można zobaczyć, że katalog jest tworzony pakiet w tymczasowym bibliotece, jednak paczka jest pusta. Porównaj go z listą plików dla testthat.

Próbowałem również pobrać inny pakiet, który używa testthat (anonymizer) i otrzymuję ten sam błąd.

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

Kilka dni temu przeprowadzałem kontrolę oddziału 'adegenet' i całe piekło się popsuło. Po dodaniu 'R_LIBS_USER' do ścieżki środowiska użytkownika, rzeczy podniosły się. Co mówią twoje '.libPaths()'? –

+0

Dobre pytanie. Dodałem dane wyjściowe, aby pokazać '.libPaths()' i zawartość biblioteki tymczasowej. Katalog pakietów jest tworzony, ale jest pusty. –

+0

Czy próbowałeś dodać "R_LIB_USER" do środowiska użytkownika lub usunąć pierwszy (tymczasowy) folder? –

Odpowiedz

0

spróbuj dodać testthat w dziedzinie DESCRIPTIONSuggests:. R CMD CHECK umieszcza tylko w zakresie pakiety wymienione w tym pliku podczas kontroli.

+0

'testthat' jest w' OPISIE'. Myślę, że R jest w stanie znaleźć 'testthat', ale nie może znaleźć mojego pakietu, ale tylko wtedy, gdy używam skrótu RStudio. Jeśli uruchomię go "ręcznie", testy zostaną znalezione i uruchomione. –

+0

To prawdopodobnie błąd RStudio, który powinien zostać zgłoszony na ich github. – lionel

0

Zdajesz się zapominać linia

library(foo) 

w pliku testthat. Jeśli spojrzę na jakieś renowned examples, zrobią to w ten sposób

Powiązane problemy