test_that("preProcess fails if user provides non-existing file", {
skip_on_cran()
testInit("terra", opts = list(reproducible.inputPaths = NULL), verbose = 2)
testthat::with_mock(
`isInteractive` = function() {
FALSE
},
{
errMsg <- testthat::capture_error(
co <- capture.output(
co <- capture.output(
type = "message",
reproducible::preProcess(
url = "https://github.com/tati-micheletti/host/raw/master/data/rasterTest",
destinationPath = tmpdir
)
)
)
)
},
.env = "reproducible"
)
expect_true(grepl("manual download", errMsg))
expect_true(grepl("appendChecksumsTable", errMsg))
optsOrig <- options(reproducible.interactiveOnDownloadFail = FALSE)
co <- capture.output(
# co <- capture.output(type = "message", {
errMsg <- testthat::capture_error({
reproducible::preProcess(
url = "https://github.com/tati-micheletti/host/raw/master/data/rasterTest",
destinationPath = tmpdir
)
})
# })
)
expect_true(grepl("manual download", errMsg))
expect_true(grepl("appendChecksumsTable", errMsg))
options(optsOrig)
testthat::with_mock(
`isInteractive` = function() {
TRUE
},
`.readline` = function(prompt) {
"n"
},
{
co <- capture.output({
co <- capture.output(type = "message", {
mess <- testthat::capture_messages({
errMsg <- testthat::capture_error({
reproducible::preProcess(
url = "https://github.com/tati-micheletti/host/raw/master/data/rasterTest",
destinationPath = tmpdir
)
})
})
})
})
},
.env = "reproducible"
)
expect_true(sum(grepl("Download failed", errMsg)) == 1)
optsOrig <- options("reproducible.interactiveOnDownloadFail" = TRUE)
testthat::with_mock(
`isInteractive` = function() {
TRUE
},
`.readline` = function(prompt) {
theFile <- file.path(tmpdir, "rasterTestAA")
write.table(theFile, file = theFile)
zipFilename <- file.path(tmpdir, "rasterTest")
origDir <- setwd(dirname(theFile))
on.exit(setwd(origDir), add = TRUE)
zip(zipfile = zipFilename, files = basename2(theFile), flags = "-q")
zipFilenameWithDotZip <- dir(tmpdir, pattern = "\\.zip", full.names = TRUE)
file.rename(from = zipFilenameWithDotZip, to = zipFilename)
"y"
},
{
co <- capture.output(
# co <- capture.output(type = "message", {
mess <- testthat::capture_messages(
errMsg <- testthat::capture_error(
reproducible::preProcess(
url = "https://github.com/tati-micheletti/host/raw/master/data/rasterTest",
destinationPath = tmpdir
)
)
# })
)
)
},
.env = "reproducible"
)
expect_true(sum(grepl("manual download", mess)) == 1)
expect_true(sum(grepl("To prevent", mess)) == 1)
if (isWindows()) { # windows can't tell a zip file is a zip file, but Unix-alikes can
expect_true(sum(grepl("Will assume the file is an archive", mess)) == 1)
}
expect_true(file.exists(file.path(tmpdir, "rasterTest.zip")))
cs <- read.table(file.path(tmpdir, "CHECKSUMS.txt"), header = TRUE)
expect_true(NROW(cs) == 2 || NROW(cs) == 3) # TODO this may be detecting a bug == on GA it is 2, locally it is 3
expect_true(all(grepl("rasterTest", cs$file)))
options(optsOrig)
})
test_that("preProcess fails if user provides a non .zip/.tar as archive", {
skip_on_cran()
testInit("terra", needInternet = TRUE)
co <- capture.output({
co <- capture.output(type = "message", {
pre <- reproducible::preProcess(url = theRasterTestZip, destinationPath = tmpdir)
})
})
testthat::expect_is(object = pre, class = "list")
testthat::expect_error({
ras <- reproducible::preProcess(archive = pre$targetFilePath)
})
})
test_that("preProcess fails if user provides non-existing file", {
skip_on_cran()
testInit("terra", needInternet = TRUE)
co <- capture.output({
co <- capture.output(type = "message", {
pre <- reproducible::preProcess(url = theRasterTestZip, destinationPath = tmpdir)
})
})
testthat::expect_is(object = pre, class = "list")
testthat::expect_error({
ras <- reproducible::preProcess(archive = "fileDoesNotExist.zip")
})
})
test_that("preProcess fails if user provides a directory as a targetFile", {
skip_on_cran()
testInit("terra", needInternet = TRUE)
co <- capture.output({
co <- capture.output(type = "message", {
pre <- reproducible::preProcess(url = theRasterTestZip, destinationPath = tmpdir)
})
})
testthat::expect_is(object = pre, class = "list")
testthat::expect_error({
ras <- reproducible::preProcess(targetFile = tmpdir)
})
})
## 2022-11-03 this no longer fails on Ubuntu 20.04
# test_that("preProcess fails if the .rar file is defective", {
# skip_on_cran()
# testInit("raster")
# co <- capture.output({
# co <- capture.output(type = "message", {
# testthat::expect_error({
# ras <- preProcess(url = theRasterTestRar, destinationPath = tmpdir)
# })
# })
# })
# })
test_that("preProcess fails if relative destPath not '.'", {
# this fails on CRAN version 2.0.2
skip_on_cran()
skip_on_ci()
testInit("googledrive", needGoogleDriveAuth = TRUE)
dPath <- basename(tmpdir)
out <- try(prepInputs(
url = "https://drive.google.com/file/d/1u7o2BzPZ2Bo7hNcC8nEctNpDmp7ce84m",
fun = "data.table::fread",
destinationPath = dPath,
purge = 1,
filename2 = "userGcM3.csv", overwrite = TRUE
))
expect_s3_class(out, "data.table")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.