How to use testthat expect_error() correctly?
r, testthat
Solution
The second argument is a a regular expression. So you should give a valid regular expression, For example , this will work for 3 functions :
## this works for 3 , error message containing Input
lapply(list('tmp1','tmp2','tmp3'),function(x){
expect_error(do.call(x,list()),"Input.*")
})
## this works for 3 also, but more complicated regular expression
lapply(list('tmp1','tmp2','tmp3'),function(x){
expect_error(do.call(x,list()),"Input.?\\(?")
})
Problem
What is the correct usage of `expect_error()` in `testthat` package? I've tried to adapt example from help, but this fails when I use brackets in error message. ``` library(testthat) # Works tmp1 <- function() stop("Input is not correct") expect_error(tmp1(), "Input is not correct") # Does not work tmp2 <- function() stop("Input (x) is not correct") expect_error(tmp2(), "Input (x) is not correct") # Does not work tmp3 <- function() stop("Input(") expect_error(tmp3(), "Input(") ``` This results in: ``` > library(testthat) > > # Works > tmp1 <- function() stop("Input is not correct") > expect_error(tmp1(), "Input is not correct") > # Does not work > tmp2 <- function() stop("Input (x) is not correct") > expect_error(tmp2(), "Input (x) is not correct") Error: tmp2() does not match 'Input (x) is not correct'. Actual value: Error in tmp2() : Input (x) is not correct > # Does not work > tmp3 <- function() stop("Input(") > expect_error(tmp3(), "Input(") Error in grepl("Input(", "Error in tmp3() : Input(\n", fixed = FALSE, : invalid regular expression 'Input(', reason 'Missing ')'' ``` R version 3.0.1 (2013-05-16)