R testthat: использовать внешний пакет только в тестовом файле — не в ОПИСАНИИ

#r #testthat

#r #testthat

Вопрос:

Я пытаюсь запустить testthat скрипт, используя действия GitHub.

Я хотел бы протестировать функциональность моей функции, которая позволяет комбинировать ее со (многими) внешними пакетами. Теперь я хочу протестировать эти внешние пакеты для R CMD Check , но я не хочу загружать внешние пакеты вообще (т. Е. Помещать их в Описание) — в конце концов, большинство людей не будут использовать эти внешние пакеты.

Есть идеи, как просто включить внешний пакет в файлы тестирования, но не в ОПИСАНИЕ?

Спасибо!

Ответ №1:

Я думаю, вы описываете очень стандартное использование Suggests .

Я вижу две связанные, но разделяемые проблемы:

  • Вы хотите протестировать что-то, используя CI, в данном случае GHA. Это нормально. Поскольку вы контролируете выполнение кода, вы можете переместить свой код из тестового запуска, скажем, inst/examples и вызвать его явно. Таким образом, стандартная проверка «использует ли пакет необъявленный код» проходит как inst/examples не проверяется

  • Вы не хотите заставлять других людей загружать эти пакеты. Это тоже хорошо, и у нас есть Suggests: для этого! Прочитайте раздел 1.1 «Написание расширений R» обо всей подробной семантике. Если ваш пакет вызывает другие пакеты с помощью тестов, every R CMD check касается этого (и внешних пакетов), поэтому они должны быть объявлены. Но вы уже знаете, что только «некоторые» люди захотят использовать это «иногда»: это именно то, что Suggests: нужно, и вы заключаете использование в скобки if (requireNamespace(pkgHere, quietly=TRUE)) .

Вы можете пойти любым путем или даже объединить оба. Но вы не можете вызывать пакеты из тестов и не объявлять их.

Комментарии:

1. Большое спасибо, Дирк, именно то, что я искал!