Использование аргумента фильтра в test_package для пропуска тестов

Я хотел бы запустить модульные тесты пакетов во время R CMD check, но пропустить тесты, требующие подключения к Интернету. По соглашению, все модульные тесты, которым требуется Интернет, имеют слово network в имени файла.

Следовательно, мой run-all.R содержит:

library(testthat)
test_package("mypackage", filter="^((?!network).)*$")

Однако это дает ошибку invalid regular expression. Как указать аргумент filter, чтобы он запускал все модульные тесты, кроме тех, в которых есть слово network?


person Jeroen    schedule 26.03.2014    source источник
comment
Я не (спасибо), но я действительно не хочу, чтобы CMD check зависело от внешних серверов (не только от подключения)   -  person Jeroen    schedule 27.03.2014
comment
А вы знаете о NOT_CRAN envvar?   -  person hadley    schedule 27.03.2014
comment
Это работает только в пределах devtools, верно?   -  person Jeroen    schedule 28.03.2014
comment
Да, но вы также можете настроить себя. Я не думаю, что вы можете выразить то, что хотите, без отрицательного утверждения, которое поддерживает только движок perl.   -  person hadley    schedule 28.03.2014


Ответы (1)


Используйте аргумент invert:

test_package("mypackage", filter="network", invert=TRUE)

Аргумент invert в конечном итоге перенаправляется в grepl через аргумент ... через test_check -> run_tests -> test_dir -> и т. д. Из ?test_dir:

...: дополнительные аргументы, переданные 'grepl' для управления фильтрацией.

person BrodieG    schedule 11.04.2017