Using filter argument in test_package to skip test

2019-07-03 22:16发布

问题:

I would like to run my package unit tests during R CMD check, but skip tests that require an internet connection. By convention, all unit tests that require internet have the word network in their filename.

Hence my run-all.R contains:

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

However this gives an invalid regular expression error. How do I specify the filter argument such that it runs each unit test except the ones with the word network in them?

回答1:

Use the invert argument:

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

The invert argument eventually gets forwarded to grepl via the ... argument via test_check -> run_tests -> test_dir -> etc. From ?test_dir:

...: Additional arguments passed to 'grepl' to control filtering.