#r #testthat
#r #testthat
Вопрос:
Я пытаюсь запустить testthat
скрипт, используя действия GitHub.
Я хотел бы протестировать функциональность моей функции, которая позволяет комбинировать ее со (многими) внешними пакетами. Теперь я хочу протестировать эти внешние пакеты для R CMD Check
, но я не хочу загружать внешние пакеты вообще (т. Е. Помещать их в Описание) — в конце концов, большинство людей не будут использовать эти внешние пакеты.
Есть идеи, как просто включить внешний пакет в файлы тестирования, но не в ОПИСАНИЕ?
Спасибо!
Ответ №1:
Я думаю, вы описываете очень стандартное использование Suggests
.
Я вижу две связанные, но разделяемые проблемы:
-
Вы хотите протестировать что-то, используя CI, в данном случае GHA. Это нормально. Поскольку вы контролируете выполнение кода, вы можете переместить свой код из тестового запуска, скажем,
inst/examples
и вызвать его явно. Таким образом, стандартная проверка «использует ли пакет необъявленный код» проходит какinst/examples
не проверяется -
Вы не хотите заставлять других людей загружать эти пакеты. Это тоже хорошо, и у нас есть
Suggests:
для этого! Прочитайте раздел 1.1 «Написание расширений R» обо всей подробной семантике. Если ваш пакет вызывает другие пакеты с помощью тестов, everyR CMD check
касается этого (и внешних пакетов), поэтому они должны быть объявлены. Но вы уже знаете, что только «некоторые» люди захотят использовать это «иногда»: это именно то, чтоSuggests:
нужно, и вы заключаете использование в скобкиif (requireNamespace(pkgHere, quietly=TRUE))
.
Вы можете пойти любым путем или даже объединить оба. Но вы не можете вызывать пакеты из тестов и не объявлять их.
Комментарии:
1. Большое спасибо, Дирк, именно то, что я искал!