test_that("uncompress error", {
skip_on_cran()
local_cli_config()
tmp <- withr::local_tempdir()
pkgzip <- file.path(tmp, "foo-t.zip")
zip::zipr(pkgzip, test_path("fixtures", "foo"))
bts <- readBin(pkgzip, "raw", file.size(pkgzip))
bts <- head(bts, as.integer(length(bts) / 2))
writeBin(bts, pkgzip)
plan <- data_frame(
type = "local",
binary = FALSE,
packaged = FALSE,
dependencies = list(character()),
needscompilation = TRUE,
file = pkgzip,
package = "foo"
)
expect_snapshot(
error = TRUE,
transform = function(x) sub("'.*/foo-t.zip", ".../foo-t.zip", x),
install_package_plan(plan, lib = tempdir())
)
})
test_that("build error", {
withr::local_envvar(PKG_OMIT_TIMES = "true")
pkg <- source_test_package("foo2")
quo <- substitute({
plan <- data.frame(
stringsAsFactors = FALSE,
type = "local",
binary = FALSE,
dependencies = I(list(character())),
file = pkg,
needscompilation = TRUE,
package = "foo"
)
lib <- withr::local_tempdir()
pkgdepends:::install_package_plan(plan, lib = lib)
}, list(pkg = pkg))
tmp <- tempfile(fileext = ".R")
on.exit(unlink(tmp), add = TRUE)
writeLines(deparse(quo), tmp)
out <- tempfile()
on.exit(unlink(out), add = TRUE)
res <- callr::rscript(
tmp,
stdout = out,
stderr = out,
fail_on_status = FALSE,
show = FALSE
)
# We can't match the whole output or even the error message, because
# different compilers have different output. Nevertheless this should
# appear in the output.
expect_match(res$stdout, "(return R_NilValue|error: expected)")
})
test_that("packaging error", {
withr::local_envvar(PKG_OMIT_TIMES = "true")
tmp <- withr::local_tempdir()
pkgzip <- file.path(tmp, "foo3-t.zip")
zip::zipr(pkgzip, test_path("fixtures", "foo3"))
quo <- substitute({
plan <- data.frame(
stringsAsFactors = FALSE,
type = "local",
binary = FALSE,
dependencies = I(list(character())),
file = pkgzip,
needscompilation = TRUE,
package = "foo3",
packaged = FALSE
)
lib <- withr::local_tempdir()
pkgdepends:::install_package_plan(plan, lib = lib)
}, list(pkgzip = pkgzip))
tmp <- tempfile(fileext = ".R")
on.exit(unlink(tmp), add = TRUE)
writeLines(deparse(quo), tmp)
out <- tempfile()
on.exit(unlink(out), add = TRUE)
res <- callr::rscript(
tmp,
stdout = out,
stderr = out,
fail_on_status = FALSE,
show = FALSE
)
expect_true(
grepl("not in valid DCF format", res$stdout, fixed = TRUE) ||
grepl("Error in read.dcf", res$stdout, fixed = TRUE)
)
})
test_that("warn_for_long_paths", {
# TODO: this is challenging to test, because it is hard to create these
# long paths on Windows.
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.