Я использую пакет testthat
для написания тестов для моего пакета R. Я следовал инструкциям на странице http://r-pkgs.had.co.nz/tests.html (по-моему). я использовал
devtools::use_testthat()
для настройки скелета тестирования. Я создал тестовый файл в tests/testthat
, и имя файла начинается с test
. Когда я запускаю devtools::test()
или Ctrl+Shift+T в RStudio, тесты выполняются успешно, однако когда я запускаю R CMD check
или Ctrl+Shift+E, testthat
не может найти мой пакет. я получаю ошибку
> 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
Я изменяю путь к своей библиотеке, устанавливая R_LIBS_SITE
в файле .Renviron
. Я подозреваю, что это не читается при запуске R CMD check
, но я не думаю, что это должно иметь значение.
Когда я запускаю devtools::check()
из консоли RStudio, он успешно завершается (включая тесты), однако при запуске Check in RStudio происходит сбой.
Я добавил некоторую отладку в testthat.R
, чтобы распечатать .libPaths()
и другие биты:
> 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"
Вы можете видеть, что каталог пакета создан во временной библиотеке, однако пакет пуст. Сравните его со списком файлов для testthat
.
Я также пытался загрузить другой пакет, использующий testthat
(анонимайзер), и получаю ту же ошибку.
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
adegenet
, и все пошло прахом. После добавленияR_LIBS_USER
к пути пользовательской среды все пошло на лад. Что говорит ваш.libPaths()
? - person Roman Luštrik   schedule 20.11.2015.libPaths()
и содержимое временной библиотеки. Каталог пакетов создается, но он пуст. - person Tim Keighley   schedule 23.11.2015R_LIB_USER
в пользовательскую среду или удалить первую (временную) папку? - person Roman Luštrik   schedule 23.11.2015R_LIBS_USER
иR_LIBS_SITE
, но ни один из них не прошел проверку. Я думаю, что самое странное, что если я вызываюdevtools::check()
из консоли, он работает (включая запуск тестов), однако, если я использую пакет проверки RStudio, это не так. Я не вижу разницы между этими вызовами. - person Tim Keighley   schedule 24.11.2015