test_that("decompress various file types", {
types <- c("zip", "tar", "tar.gz", "tgz")
for (type in types) {
fname <- paste0("foo.", type)
archive <- file.path("archives", fname)
dec <- tempfile()
decompress(archive, dec)
expect_true(
file.exists(file.path(dec, "foo", "R", "foo.R")),
info = type
)
}
})
test_that("decompress with internal unzip", {
types <- c("zip", "tar", "tar.gz", "tgz")
for (type in types) {
fname <- paste0("foo.", type)
archive <- file.path("archives", fname)
dec <- tempfile()
on.exit(unlink(dec, recursive = TRUE), add = TRUE)
mockery::stub(
decompress,
"getOption",
function(x, default = NULL) {
if (x == "unzip") {
"internal"
} else {
if (missing(default) || x %in% names(options())) {
options()[[x]]
} else {
default
}
}
}
)
decompress(archive, dec)
expect_true(
file.exists(file.path(dec, "foo", "R", "foo.R")),
info = type
)
}
})
test_that("decompress errors on unknown file types", {
tmp <- tempfile(fileext = ".foobar")
on.exit(unlink(tmp, recursive = TRUE), add = TRUE)
cat("surprise!", file = tmp)
expect_error(
decompress(tmp, tempdir()),
"Don't know how to decompress"
)
})
test_that("source_pkg", {
foo_dir <- file.path("archives", "foo")
expect_equal(source_pkg(foo_dir), foo_dir)
bad_dir <- "archives"
expect_error(
source_pkg(bad_dir),
"Does not appear to be an R package"
)
foo_tgz <- file.path("archives", "foo.tar.gz")
pkg_dir <- source_pkg(foo_tgz)
on.exit(unlink(pkg_dir, recursive = TRUE), add = TRUE)
expect_true(file.exists(file.path(pkg_dir, "R", "foo.R")))
expect_true(file.exists(file.path(pkg_dir, "configure")))
skip_on_os("windows")
expect_match(
as.character(file.info(file.path(pkg_dir, "configure"))$mode),
"7.."
)
})
test_that("getrootdir", {
cases <- list(
list(c("foo/bar", "foo/"), "foo"),
list(c("/foo/bar/baz", "/foo/bar"), "/foo"),
list(c("this/foo/bar", "this/that"), "this"),
list(c("", "yes"), ".")
)
for (c in seq_along(cases)) {
expect_identical(getrootdir(cases[[c]][[1]]), cases[[c]][[2]], info = c)
}
expect_error(getrootdir(character()))
})
test_that("my_unzip respects options('unzip')", {
mockery::stub(my_unzip, "utils::unzip", function(...) int <<- TRUE)
mockery::stub(my_unzip, "system_check", function(...) int <<- FALSE)
int <- NULL
withr::with_options(c("unzip" = "internal"), my_unzip("blah", "tg"))
expect_true(int)
int <- NULL
withr::with_options(c("unzip" = ""), my_unzip("blah", "tg"))
expect_true(int)
int <- NULL
withr::with_options(c("unzip" = "somethingelse"), my_unzip("blah", "tg"))
expect_false(int)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.