library(testthat)
local({
# Disable test on Windows, pending devtools
# compatibility with new toolchain
isWindows <- Sys.info()[["sysname"]] == "Windows"
if (isWindows)
return()
# Disable tests on Solaris, because we don't use Catch there.
isSolaris <- Sys.info()[["sysname"]] == "SunOS"
if (isSolaris)
return()
if (!requireNamespace("usethis", quietly = TRUE))
return()
# devel <- try(pkgbuild::has_compiler(), silent = TRUE)
# if (!isTRUE(devel))
# return()
quietly <- function(expr) {
suppressMessages(capture_output(result <- expr))
result
}
perform_test <- function(pkgName, catchEnabled) {
owd <- setwd(tempdir())
on.exit(setwd(owd), add = TRUE)
pkgPath <- file.path(tempdir(), pkgName)
libPath <- file.path(tempdir(), "rlib")
if (!utils::file_test("-d", libPath))
dir.create(libPath)
.libPaths(c(libPath, .libPaths()))
on.exit({
unlink(pkgPath, recursive = TRUE)
unlink(libPath, recursive = TRUE)
}, add = TRUE)
quietly(usethis::create_package(pkgPath, open = FALSE))
quietly(testthat::use_catch(pkgPath))
cat("LinkingTo: testthat",
file = file.path(pkgPath, "DESCRIPTION"),
append = TRUE,
sep = "\n")
cat(
sprintf("useDynLib(%s, .registration=TRUE)", pkgName),
file = file.path(pkgPath, "NAMESPACE"),
append = TRUE,
sep = "\n"
)
if (!catchEnabled) {
makevarsPath <- file.path(
pkgPath,
"src",
if (isWindows) "Makevars.win" else "Makevars"
)
cat(
"PKG_CPPFLAGS = -DTESTTHAT_DISABLED",
file = makevarsPath,
sep = "\n"
)
}
install.packages(pkgs = pkgPath, repos = NULL, type = "source")
library(pkgName, character.only = TRUE)
stopifnot(.Call("run_testthat_tests", FALSE, PACKAGE = pkgName))
pkgload::unload(pkgName)
}
withr::with_envvar(c(R_TESTS = ''), perform_test("testthatclient1", TRUE))
withr::with_envvar(c(R_TESTS = ''), perform_test("testthatclient2", FALSE))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.