context("handlers")
test_that("Verify options are set.", {
enable_errorist()
# Retrieve errorist helper
test_call = getOption("error")
# Retrieve the default call-type
default_call = getOption("errorist.warning",
searcher::search_google)
expect_true(is.call(test_call),
"Verify that extracted error handler is of type call")
# needle -> haystack
expect_true("ErroristWarningHandler" %in% getTaskCallbackNames(),
"Check to see the Warning Handler is set")
disable_errorist()
# Retrieve error handler after errorist's bindings are removed.
restored_error_call = getOption("error")
# Determine if in RStudio
is_rstudio = function() Sys.getenv("RSTUDIO") == "1"
# This check attempts to figure out the state of the handlers by:
# 1. checking if an error option wasn't set.
# 2. checking if we are in rstudio and a call is still present.
# The latter is important as RStudio setups custom handler for traceback()
# et cetera routines.
expect_true(is.null(restored_error_call) || (is_rstudio() && is.call(restored_error_call)),
"Check to see error handler is null or a call (RStudio may inject)")
# !needle -> haystack
expect_false("ErroristWarningHandler" %in% getTaskCallbackNames(),
"Check to see the Warning Handler was removed from callback")
})
test_that("Check Output from Functions", {
enable_errorist()
# Retrieve errorist helper
test_error_call = getOption("error")
options_default_function = getOption("errorist.warning", searcher::search_google)
# Retrieve the function
test_error_function = test_error_call[[1]]
expect_true(is.function(options_default_function),
"Verify the default error handler is a function.")
expect_true(identical(environment(test_error_function),
environment(options_default_function)),
"Verify that test function call matches the default function's environment")
expect_equal(test_error_function("toad"), options_default_function("toad"),
"Check that the search query term is the same.")
## TO DO: Make more robust
# For right now, this should satisfy the sanity check of default functions.
# However, as Hadley pointed out, "the first element of a call is not always
# a symbol." As an example, he gave: `quote(f()()())`, which gives another call.
# Read: https://adv-r.hadley.nz/expressions.html#abstract-syntax-trees
## Cannot really interface with the addTaskCallback()... This should
## always return a "TRUE" with a warning check enabled.
disable_errorist()
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.