问题
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.
来源:https://stackoverflow.com/questions/22675252/using-filter-argument-in-test-package-to-skip-tests