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
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()'? –
Dobre pytanie. Dodałem dane wyjściowe, aby pokazać '.libPaths()' i zawartość biblioteki tymczasowej. Katalog pakietów jest tworzony, ale jest pusty. –
Czy próbowałeś dodać "R_LIB_USER" do środowiska użytkownika lub usunąć pierwszy (tymczasowy) folder? –