#r #yaml #devtools
Вопрос:
Я пытаюсь найти внешний файл с .yml
расширением для создания модульного теста testthat
при сборке пакета R, файл помещается в inst
папку, как указано здесь https://r-pkgs.org/data.html#data-extdata . Я использую system.file()
для загрузки файла с yaml
пакетом для некоторого модульного теста (нет base::system.file()
, чтобы pkgload:::shim_system.file()
его можно было перехватить). Тесты проходят, если я это делаю devtools::test()
, но он продолжает выдавать ошибку при запуске devtools::check()
.
Однако, что интересно, после множества попыток я обнаружил, что devtools::check()
это не выдает никаких ошибок, если я сохраняю файл с .txt
расширением вместо .yaml
/ .yml
.
## inside test_that()
## cf <- system.file("config", "config1.yml", package = "mypackage", mustWork = TRUE)
## Error note after devtools::check()
Error in `system.file("config", "config1.yml", package = "mypackage", mustWork = TRUE)`: no file found
Backtrace:
x
1. -base::system.file(...) test-set_config.R:34:2
[ FAIL 1 | WARN 0 | SKIP 0 | PASS 15 ]
# -------------------------------------------------------------
## No error in devtools::check() when config1.yml is renamed as config1.txt !!
Кто-нибудь испытывал то же самое? Я использую последнюю версию devtools
as на CRAN (v2.4.2), на R 4.1.1. Если да, есть ли какой-либо способ продолжать использовать .yaml
/ .yml
, и нет .txt
?
Обновить
Я случайно сохранил [.]yml
, [.]yaml
.Rbuildignore
чтобы игнорировать файлы непрерывной интеграции yaml, сделал их specific вместо подстановочных знаков — и теперь это работает! Прошу прощения за ложную тревогу, я сам был в замешательстве, когда получил эту странную вещь. https://github.com/r-lib/devtools/issues/2384#issuecomment-947943050
Комментарии:
1. Ведет ли это себя по-другому, если файл не является файлом yaml?
2. Это то, что я упоминал в вопросе, если тот же файл сохраняется с расширением .txt, тогда он работает. Пакет YAML R все еще может загружать его, поскольку он не обязательно должен быть .yml для работы yaml::yaml.load_file. Но это странно.
3. @VivekAtal Какова структура каталогов
inst/
? И каков путь кconfig1.yml
файлу (относительно проекта)?4. Извините, я думал, что прочитал это полностью, но как-то пропустил этот четкий / важный момент. Мои извинения!
5. Я не могу повторить эту ошибку, когда пытаюсь использовать простой новый пакет. Файл найден с
.yml
расширением без проблем. В коде прокладки нет ничего, что бы рассматривало расширение пакета, насколько я могу видеть. Вы увереныpackage = "mypackage"
, что правильно настроили set? У вас уже установлен пакет.libPaths()
или он только в вашей папке разработки?