R Проверка CMD / devtools::test() и текущий рабочий каталог

Я работаю над пакетом R, в котором есть некоторые функции, которые я хочу протестировать (локально) на данных, которые я не могу распространять, потому что источник данных является собственностью.

У меня есть папка (paid_projections), в которой я храню эти файлы. Это вызвало некоторые начальные трудности при запуске devtools::test() и проверки R CMD, я думаю, из-за тонких различий в рабочем каталоге, которые видели эти утилиты.

Я решил эту проблему, заставив мои тесты сделать некоторые специальные исправления пути:

spec_file <- file.path('paid_projections', 'pod_projections.xlsx')
file_loc <- file.path(getwd(), spec_file)
#for CMD check
file_loc <- gsub('.Rcheck', '', file_loc, fixed = TRUE)
#for devtools::test()
file_loc <- gsub('tests/testthat/', '', file_loc, fixed = TRUE)
ex <- read_raw_pod(file_loc)

Это... далеко не идеально, и мне как бы хочется пойти принять душ. Это создает поведение, которое я хочу (я могу запустить эти тесты в консоли, через devtools::test() или проверку R CMD), но это не похоже на правильное решение.

Там есть команда devtools::wd(), которая кажется здесь полезной, но я не мог понять, как она может заменить бельмо на глазу выше. Буду рад любым предложениям!


person Andrew    schedule 13.03.2016    source источник
comment
R CMD check действительно работает? Я предполагаю, что вы не помещаете эти файлы в свой пакет (.tar.gz), поэтому он не может работать. По крайней мере, не на CRAN.   -  person sgibb    schedule 13.03.2016
comment
Хороший вопрос, я не планирую отправлять его в CRAN в ближайшее время, просто использую проверку CMD на предмет работоспособности кода / практики разработки через тестирование. Версия RStudio/devtools/local работает. Однако на CRAN это не сработает.   -  person Andrew    schedule 13.03.2016
comment
По крайней мере, для devtools вы можете сделать следующее: поместить данные в inst/paid и добавить inst/paid к .Rbuildignore и .gitignore. Затем вы можете использовать system.file("paid", package="mypackage") (он перезаписывается devtools), чтобы получить правильный путь в тестах. Я не думаю, что это сработает для R CMD check, потому что .Rbuildignore не позволяет R помещать данные в tar.gz.   -  person sgibb    schedule 13.03.2016