library(testthat)
library(jeksterslabRutils)
context("Test util_check_file_type.")

Set test parameters

tmp_01 <- util_make_subdir()
tmp_02 <- util_make_subdir()
invalid_from <- system.file(
  "extdata",
  "tests",
  "invalid.epub",
  package = "jeksterslabRutils",
  mustWork = TRUE
)
valid_from <- system.file(
  "extdata",
  "tests",
  "valid.epub",
  package = "jeksterslabRutils",
  mustWork = TRUE
)
invalid <- file.path(
  tmp_01,
  "invalid.epub"
)
valid <- file.path(
  tmp_01,
  "valid.epub"
)
fn <- c(
  "invalid.epub",
  "valid.epub"
)
file.copy(
  from = c(
    invalid_from,
    valid_from
  ),
  to = c(
    invalid,
    valid
  )
)
#> [1] TRUE TRUE
Variable <- c(
  "`invalid`",
  "`valid`"
)
Description <- c(
  "Invalid file.",
  "Valid file."
)
Value <- c(
  invalid,
  valid
)
knitr::kable(
  x = data.frame(
    Variable,
    Description,
    Value
  ),
  row.names = FALSE
)
Variable Description Value
invalid Invalid file. /media/jeksterslab/scripts/r/jeksterslabRutils/vignettes/tests/CMbZYGSr/invalid.epub
valid Valid file. /media/jeksterslab/scripts/r/jeksterslabRutils/vignettes/tests/CMbZYGSr/valid.epub

Run test

util_check_file_type(
  dir = tmp_01,
  fn = fn,
  file_type = "EPUB document",
  remove_files = TRUE,
  par = FALSE
)
#> [1] "/media/jeksterslab/scripts/r/jeksterslabRutils/vignettes/tests/CMbZYGSr/invalid.epub"

Results

Note that only valid.epub should be retained.

Parameter <- fn
Result <- c(
  file.exists(invalid),
  file.exists(valid)
)
knitr::kable(
  x = data.frame(
    Description,
    Parameter,
    Result
  ),
  row.names = FALSE
)
Description Parameter Result
Invalid file. invalid.epub FALSE
Valid file. valid.epub TRUE
test_that("invalid file is deleted", {
  skip_on_appveyor()
  expect_equivalent(
    file.exists(invalid),
    FALSE
  )
})
#> Test passed 🥇
test_that("valid file is retained", {
  skip_on_appveyor()
  expect_equivalent(
    file.exists(valid),
    TRUE
  )
})
#> Test passed 🥇

Expect error

test_that("tryCatch", {
  expect_error(
    util_check_file_type(
      dir = tmp_02,
      par = FALSE
    )
  )
})
#> Test passed 🌈

tryCatch error for code coverage

files <- paste0(
  file.path(
    tmp_02,
    "error"
  ),
  1:5,
  ".epub"
)
fn <- paste0(
  "error",
  1:5,
  ".epub"
)
sapply(
  X = files,
  FUN = file.create
)
#> /media/jeksterslab/scripts/r/jeksterslabRutils/vignettes/tests/RSaIBsOu/error1.epub 
#>                                                                                TRUE 
#> /media/jeksterslab/scripts/r/jeksterslabRutils/vignettes/tests/RSaIBsOu/error2.epub 
#>                                                                                TRUE 
#> /media/jeksterslab/scripts/r/jeksterslabRutils/vignettes/tests/RSaIBsOu/error3.epub 
#>                                                                                TRUE 
#> /media/jeksterslab/scripts/r/jeksterslabRutils/vignettes/tests/RSaIBsOu/error4.epub 
#>                                                                                TRUE 
#> /media/jeksterslab/scripts/r/jeksterslabRutils/vignettes/tests/RSaIBsOu/error5.epub 
#>                                                                                TRUE
util_check_file_type(
  dir = tmp_02,
  fn = fn,
  par = FALSE
)
#> [1] "/media/jeksterslab/scripts/r/jeksterslabRutils/vignettes/tests/RSaIBsOu/error1.epub"
#> [2] "/media/jeksterslab/scripts/r/jeksterslabRutils/vignettes/tests/RSaIBsOu/error2.epub"
#> [3] "/media/jeksterslab/scripts/r/jeksterslabRutils/vignettes/tests/RSaIBsOu/error3.epub"
#> [4] "/media/jeksterslab/scripts/r/jeksterslabRutils/vignettes/tests/RSaIBsOu/error4.epub"
#> [5] "/media/jeksterslab/scripts/r/jeksterslabRutils/vignettes/tests/RSaIBsOu/error5.epub"

Clean up temporary files and folders

util_clean_dir(
  dir = tmp_01,
  create_dir = FALSE
)
util_clean_dir(
  dir = tmp_02,
  create_dir = FALSE
)