Nothing
describe("archive_write", {
it("creates a writable connection", {
a <- tempfile(fileext = ".zip")
out_con <- archive_write(a, "mtcars.csv")
on.exit({
unlink(a)
})
expect_is(out_con, "connection")
expect_is(out_con, "archive_write")
write.csv(file = out_con, mtcars)
in_con <- unz(a, "mtcars.csv")
data <- read.csv(in_con, row.names = 1)
expect_equal(data, mtcars)
})
it("works with all supported formats", {
extensions <-
c("7z",
"cpio",
"iso",
#"mtree", mtree is a textual description of a file hierarchy, rather than a normal archive format.
"tar",
"tgz",
"taz",
"tar.gz",
"tbz",
"tbz2",
"tz2",
"tar.bz2",
"tlz",
"tar.lzma",
"txz",
"tar.xz",
#"tzo",
"taZ",
"tZ",
#"warc",
"jar",
"zip")
if (libarchive_version() >= "3.3.3") {
extensions <- c(extensions, "tar.zst")
}
test_extension <- function(ext) {
filename <- tempfile(fileext = paste0(".", ext))
on.exit(unlink(filename))
expect_error(write.csv(mtcars, archive_write(filename, "mtcars.csv")), NA, info = ext)
expect_equal(read.csv(archive_read(filename, "mtcars.csv"), row.names = 1), mtcars)
}
for (ext in extensions) {
test_extension(ext)
}
})
it("can take options", {
f <- tempfile(fileext = ".tar.gz")
f2 <- tempfile(fileext = ".tar.gz")
on.exit(unlink(c(f, f2)))
write.csv(mtcars,
archive_write(f, "mtcars.csv", options = "compression-level=0")
)
write.csv(mtcars,
archive_write(f2, "mtcars.csv", options = "compression-level=9")
)
expect_gt(file.size(f), file.size(f2))
})
it("zip writer can take options", {
f <- tempfile(fileext = ".zip")
f2 <- tempfile(fileext = ".zip")
on.exit(unlink(c(f, f2)))
write.csv(mtcars,
archive_write(f, "mtcars.csv", options = "compression-level=1")
)
write.csv(mtcars,
archive_write(f2, "mtcars.csv", options = "compression-level=9")
)
expect_gt(file.size(f), file.size(f2))
})
it("can translate character sets with a cpio archive", {
skip_on_os("windows")
skip_on_os("solaris")
skip_on_os("mac") # for some unknown reason this test fails on macOS
f <- tempfile(fileext = ".cpio")
filename <- "\u0401\u0404\u0449\u045e\u0445\u0407"
write.csv(mtcars,
archive_write(f, filename, options = "hdrcharset=CP866")
)
a <- archive(f, options = "hdrcharset=CP866")
expect_equal(a$path, filename)
})
it("can translate character sets with a zip archive", {
skip_on_os("windows")
skip_on_os("solaris")
skip_on_os("mac") # for some unknown reason this test fails on macOS
f <- tempfile(fileext = ".zip")
filename <- "\u0401\u0404\u0449\u045e\u0445\u0407"
write.csv(mtcars,
archive_write(f, filename, options = "hdrcharset=CP866")
)
a <- archive(f, options = "hdrcharset=CP866")
expect_equal(a$path, filename)
})
it("works with relative paths", {
dir.create(d <- tempfile())
old <- getwd()
on.exit(setwd(old), add = TRUE)
setwd(d)
dir.create("files")
write.csv(iris, file.path("files", "iris.csv"))
write.csv(mtcars, file.path("files", "mtcars.csv"))
write.csv(airquality, file.path("files", "airquality.csv"))
# Add some to a new archive
a <- archive_write_dir("data.tar.gz", "files")
expect_equal(
sort(a$path),
c("airquality.csv", "iris.csv", "mtcars.csv")
)
})
it("works with absolute paths", {
dir.create(d <- tempfile())
old <- getwd()
on.exit(setwd(old), add = TRUE)
setwd(d)
dir.create("files")
write.csv(iris, file.path("files", "iris.csv"))
write.csv(mtcars, file.path("files", "mtcars.csv"))
write.csv(airquality, file.path("files", "airquality.csv"))
# Add some to a new archive
a <- archive_write_dir("data.tar.gz", normalizePath("files"))
expect_equal(
sort(a$path),
c("airquality.csv", "iris.csv", "mtcars.csv")
)
})
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.