if_fail <- function(expr, fn) { withCallingHandlers(expr, expectation_failure = fn) } test_temp_file <- function(fileext = "", pattern = "test-file-", envir = parent.frame(), create = TRUE) { tmp <- tempfile(pattern = pattern, fileext = fileext) if (identical(envir, .GlobalEnv)) { message("Temporary files will _not_ be cleaned up") } else { withr::defer( try(unlink(tmp, recursive = TRUE, force = TRUE), silent = TRUE), envir = envir) } if (create) { cat("", file = tmp) normalizePath(tmp) } else { tmp } } test_temp_dir <- function(pattern = "test-dir-", envir = parent.frame()) { tmp <- test_temp_file(pattern = pattern, envir = envir, create = FALSE) dir.create(tmp, recursive = TRUE, showWarnings = FALSE) normalizePath(tmp) } httpbin_url <- function() { "eu.httpbin.org" } is_offline <- (function() { offline <- NULL function() { if (is.null(offline)) { offline <<- tryCatch( is.na(pingr::ping_port(httpbin_url(), port = 443, count = 1L)), error = function(e) TRUE ) } offline } })() skip_if_offline <- function() { skip_on_cran() if (is_offline()) skip("Offline") }