`devtools:: test()` работает, но `devtools::check()` не работает для `system.file`, чтобы найти файл с расширением `.yml`

#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() или он только в вашей папке разработки?