clear_mods = function () {
rm(list = names(box:::loaded_mods), envir = box:::loaded_mods)
}
.setup_fun = NULL
.teardown_fun = NULL
context = function (desc) {
assign('.setup_fun', NULL, envir = parent.env(environment()))
assign('teardown_funs', NULL, envir = parent.env(environment()))
testthat::context(desc)
}
test_setup = function (code, env = parent.frame()) {
assign(
'.setup_fun',
rlang::new_function(list(), rlang::enexpr(code), env = env),
envir = parent.env(environment())
)
}
test_teardown = function (code, env = parent.frame()) {
assign(
'.teardown_fun',
rlang::new_function(list(), rlang::enexpr(code), env = env),
envir = parent.env(environment())
)
}
run_setup = function () {
if (! is.null(.setup_fun)) {
# Note that bquote(.(f)()) does NOT perform substitution for whatever
# reason.
eval.parent(substitute(f(), list(f = .setup_fun)))
}
}
run_teardown = function () {
if (! is.null(.teardown_fun)) {
# Note that bquote(.(f)()) does NOT perform substitution for whatever
# reason.
eval.parent(substitute(f(), list(f = .teardown_fun)))
}
}
test_that = function (desc, code) {
eval.parent(bquote({
run_setup()
on.exit(run_teardown())
testthat::test_that(.(desc), .(substitute(code)))
}))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.