test_that("output is printed on failure", {
skip_on_cran()
skip_on_covr()
# Full output in interactive sessions
badcompile <- paste0(
"local::",
normalizePath(test_path("fixtures/badcompile"))
)
tmp <- tempfile()
on.exit(unlink(tmp), add = TRUE)
expect_error(
callr::r(stdout = tmp, stderr = tmp, function(pkg) {
# if this is not R CMD check, use `load_all()``
# otherwise `load_all()` does not work, because we are not in the
# package tree in `R CMD check`.
if (Sys.getenv("_R_CHECK_PACKAGE_NAME_") == "") pkgload::load_all()
options(rlib_interactive = TRUE)
pak::pkg_install(pkg)
}, list(pkg = badcompile))
)
lines <- readLines(tmp)
expect_true(any(grepl("Failed to build badcompile", lines)))
expect_true(any(grepl("Full installation output", lines)))
expect_true(any(grepl(
"compilation failed for package .*badcompile.*",
lines
)))
expect_error(
callr::r(stdout = tmp, stderr = tmp, function(pkg) {
# see above
if (Sys.getenv("_R_CHECK_PACKAGE_NAME_") == "") pkgload::load_all()
options(rlib_interactive = FALSE)
pak::pkg_install(pkg)
}, list(pkg = badcompile))
)
lines <- readLines(tmp)
expect_true(any(grepl("Failed to build badcompile", lines)))
expect_true(any(grepl("Full installation output", lines)))
expect_true(any(grepl(
"compilation failed for package .*badcompile.*",
lines
)))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.