Nothing
options(java.parameters = "-Xmx10g")
library(testthat)
MAX_FAILS = 3
testthat::set_max_fails(MAX_FAILS)
options(testthat.progress.max_fails = MAX_FAILS)
Sys.setenv(TESTTHAT_MAX_FAILS = as.character(MAX_FAILS))
Sys.setenv(TESTTHAT_PARALLEL = "false")
ged_failure_state = new.env(parent = emptyenv())
ged_failure_state$count = 0L
ged_failure_state$max_fail = MAX_FAILS
ged_failure_state$aborting = FALSE
resolve_testthat_dir = function() {
wd = getwd()
if (dir.exists(file.path(wd, "tests", "testthat"))) {
return(file.path(wd, "tests", "testthat"))
}
if (dir.exists(file.path(wd, "GreedyExperimentalDesign", "tests", "testthat"))) {
return(file.path(wd, "GreedyExperimentalDesign", "tests", "testthat"))
}
if (basename(wd) == "testthat" && basename(dirname(wd)) == "tests") {
return(wd)
}
wd
}
resolve_package_root = function() {
testthat_dir = resolve_testthat_dir()
candidate = normalizePath(file.path(testthat_dir, "..", ".."), winslash = "/", mustWork = FALSE)
if (file.exists(file.path(candidate, "DESCRIPTION"))) {
return(candidate)
}
candidate
}
package_root = resolve_package_root()
local_lib = file.path(package_root, ".Rlib")
if (dir.exists(local_lib)) {
.libPaths(c(local_lib, .libPaths()))
}
add_java_classpath = function(root_dir) {
jar_path = file.path(root_dir, "inst", "java", "GreedyExperimentalDesign.jar")
if (file.exists(jar_path)) {
rJava::.jaddClassPath(jar_path)
}
invisible(NULL)
}
use_pkgload = requireNamespace("pkgload", quietly = TRUE) &&
file.exists(file.path(package_root, "DESCRIPTION")) &&
dir.exists(file.path(package_root, "R"))
if (use_pkgload) {
pkgload::load_all(package_root, export_all = FALSE, quiet = TRUE)
add_java_classpath(package_root)
} else {
library(GreedyExperimentalDesign)
}
ged_failure_state$log_path = file.path(resolve_testthat_dir(), "ged-failures.log")
dir.create(dirname(ged_failure_state$log_path), recursive = TRUE, showWarnings = FALSE)
if (file.exists(ged_failure_state$log_path)) {
file.remove(ged_failure_state$log_path)
}
cat(
paste0("---- ", format(Sys.time(), "%Y-%m-%d %H:%M:%S"), " ----\n"),
"Test run started.\n\n",
file = ged_failure_state$log_path,
append = TRUE
)
append_failure_log = function(exp) {
if (is.null(ged_failure_state$log_path) || !nzchar(ged_failure_state$log_path)) {
ged_failure_state$log_path = file.path(tempdir(), "ged-failures.log")
}
header = paste0(
"---- ",
format(Sys.time(), "%Y-%m-%d %H:%M:%S"),
" ----\n"
)
body = testthat:::issue_summary(exp)
cat(
header,
body,
"\n\n",
file = ged_failure_state$log_path,
append = TRUE
)
}
emit_failure_console = function(exp) {
header = paste0(
"---- ",
format(Sys.time(), "%Y-%m-%d %H:%M:%S"),
" ----\n"
)
body = testthat:::issue_summary(exp)
cat(header, body, "\n\n", file = stderr())
flush.console()
}
record_immediate_failure = function(exp) {
ged_failure_state$count = ged_failure_state$count + 1L
append_failure_log(exp)
emit_failure_console(exp)
if (ged_failure_state$count >= ged_failure_state$max_fail) {
ged_failure_state$aborting = TRUE
stop("Too many failures; aborting remaining tests.")
}
invisible(NULL)
}
LoggingReporter = R6::R6Class(
"LoggingReporter",
inherit = testthat::Reporter,
public = list(
add_result = function(context, test, result) {
if (!testthat:::expectation_success(result)) {
record_immediate_failure(result)
}
}
)
)
install_reporter_hook = function() {
if (!exists("ged_orig_test_files_reporter", envir = .GlobalEnv, inherits = FALSE)) {
assign("ged_orig_test_files_reporter", testthat:::test_files_reporter, envir = .GlobalEnv)
utils::assignInNamespace(
"test_files_reporter",
function(reporter, mode = c("serial", "parallel"), desc = NULL, frame = rlang::caller_env()) {
res = get("ged_orig_test_files_reporter", envir = .GlobalEnv)(
reporter,
mode = mode,
desc = desc,
frame = frame
)
res$multi = testthat::MultiReporter$new(reporters = c(list(LoggingReporter$new()), res$multi$reporters))
res
},
ns = "testthat"
)
}
invisible(TRUE)
}
patch_recover2 = function() {
if (!exists("ged_orig_recover2", envir = .GlobalEnv, inherits = FALSE)) {
assign("ged_orig_recover2", testthat:::recover2, envir = .GlobalEnv)
utils::assignInNamespace(
"recover2",
function(...) {
if (!interactive()) {
return(invisible(FALSE))
}
get("ged_orig_recover2", envir = .GlobalEnv)(...)
},
ns = "testthat"
)
}
invisible(TRUE)
}
abort_if_too_many_failures = function() {
if (isTRUE(ged_failure_state$aborting)) {
stop("Too many failures; aborting remaining tests.")
}
invisible(NULL)
}
with_immediate_failures = function(expr) {
abort_if_too_many_failures()
force(expr)
}
skip_on_cmd_check = function() {
is_check = nzchar(Sys.getenv("_R_CHECK_PACKAGE_NAME_")) ||
nzchar(Sys.getenv("R_CMD_CHECK")) ||
nzchar(Sys.getenv("_R_CHECK_CRAN_INCOMING_")) ||
nzchar(Sys.getenv("_R_CHECK_CRAN_INCOMING_REMOTE_"))
if (is_check) {
testthat::skip("Skipped during R CMD check.")
}
invisible(NULL)
}
install_reporter_hook()
patch_recover2()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.