tests/testthat/test-util-tar.R

context("util (tar)")


test_that("tar_directory", {
  skip_if_external_tar_unsupported()
  p <- tempfile_test()
  dir.create(p, TRUE, FALSE)
  for (i in letters) {
    writeLines(i, file.path(p, i))
  }

  bin <- tar_directory(p)
  expect_is(bin, "raw")
  tmp <- untar_bin(bin)
  expect_true(setequal(dir(tmp), letters))

  unlink(tmp, recursive = TRUE)
  unlink(p, recursive = TRUE)
})


test_that("selective tar", {
  skip_if_external_tar_unsupported()
  p <- tempfile_test()
  dir.create(p, TRUE, FALSE)

  for (i in letters) {
    writeLines(i, file.path(p, i))
  }

  bin <- tar_files(letters[1:6], p)

  tmp <- untar_bin(bin)
  expect_true(setequal(dir(tmp), letters[1:6]))

  unlink(tmp, recursive = TRUE)
  unlink(p, recursive = TRUE)
})


test_that("tar_file", {
  skip_if_external_tar_unsupported()
  bin <- tar_file("sample_responses/README.md")
  tmp <- untar_bin(bin)
  expect_equal(dir(tmp), "README.md")
  expect_equal(unname(tools::md5sum(file.path(tmp, "README.md"))),
               unname(tools::md5sum("sample_responses/README.md")))
  unlink(tmp, recursive = TRUE)
})


test_that("tar failure", {
  skip_if_external_tar_unsupported()
  p1 <- tempfile_test()
  p2 <- tempfile_test()
  expect_error(tar_system(p1, p2),
               "tar failed with status")
  unlink(p1)
})


test_that("external list", {
  skip_if_external_tar_unsupported()
  p <- tempfile_test()
  dir.create(p, TRUE, FALSE)
  for (i in letters) {
    writeLines(i, file.path(p, i))
  }

  bin <- tar_files(letters[1:6], p, external_list = TRUE)
  tmp <- untar_bin(bin)
  expect_true(setequal(dir(tmp), letters[1:6]))

  unlink(tmp, recursive = TRUE)
  unlink(p, recursive = TRUE)
})
richfitz/stevedore documentation built on July 22, 2023, 1:13 p.m.