test_that("fingerprinting works as expected", {
toolTest <- function() {
this <- 1
is <- 2
a <- 3
test <- 4
return(paste0(this, is, a, test))
}
globalassign("toolTest")
expect_equivalent(fingerprint("toolTest", packages = "madrat"), "dc0a3502")
emptyfolder <- paste0(withr::local_tempdir(), "/empty")
dir.create(emptyfolder, recursive = TRUE, showWarnings = FALSE)
expect_equal(unname(fingerprintFiles(emptyfolder)), "bc4159c0")
})
test_that("fingerprintFiles works as expected", {
localConfig(verbosity = 1, .verbose = FALSE)
withr::local_dir(withr::local_tempdir())
writeLines("this is a test", "test.txt", sep = "")
fp <- fingerprintFiles("test.txt")
expect_identical(fp, c(test.txt = "e495aa95"))
})
test_that("fingerprinting works for edge cases", {
localConfig(verbosity = 1, .verbose = FALSE)
withr::local_dir(withr::local_tempdir())
writeLines("this is a test", "map.csv", sep = "")
readFingerprintTest <- function() {
map <- toolGetMapping("map.csv", where = "local")
return(1)
}
globalassign("readFingerprintTest")
expect_silent({
fp <- fingerprint("readFingerprintTest", packages = getConfig("packages"), details = TRUE)
})
expect_identical(attr(fp, "details")[-1], c("map.csv" = "59eab5b3", readFingerprintTest = "b5efba0b"))
expect_null(fingerprintCall("blub"))
})
test_that("empty hash cache file is handled properly", {
localTempdir <- withr::local_tempdir()
dir.create(file.path(localTempdir, "something"))
file.create(file.path(localTempdir, paste0("fileHashCache", basename(localTempdir), ".rds")))
localConfig(sourcefolder = localTempdir, cachefolder = localTempdir)
expect_warning(fingerprintFiles(localTempdir),
"Ignoring corrupt hashCacheFile: Error in readRDS(hashCacheFile) : error reading from connection",
fixed = TRUE)
})
test_that("fingerprinting works with control flags", {
localConfig(verbosity = 1, .verbose = FALSE)
readData <- function() {
return(1)
}
readData2 <- function() {
return(2)
}
calcExample2 <- function() {
a <- readSource("Data")
if (FALSE) b <- readSource("Data2")
}
globalassign("readData", "readData2", "calcExample2")
fpExpected <- structure("fb5e6e40",
call = "calcExample2",
details = c(
calcExample2 = "8386790d",
readData = "667d53aa",
readData2 = "041bef7f"
)
)
expect_identical(fingerprint("calcExample2", details = TRUE, packages = "madrat"), fpExpected)
readData3 <- function() {
return(3)
}
calcExample2 <- function() {
"!# @monitor readData3"
"!# @ignore readData2"
a <- readSource("Data")
if (FALSE) b <- readSource("Data2")
}
calcExample3 <- function() {
a <- calcOutput("Example2", aggregate = FALSE)
}
calcExample4 <- function() {
"!# @monitor readData2"
"!# @ignore readData2"
}
globalassign("readData3", "calcExample2", "calcExample3", "calcExample4")
fp2Expected <- structure("cef10efc",
call = "calcExample2",
details = c(
calcExample2 = "ded5ab1f",
readData = "667d53aa", readData3 = "56324bcf"
)
)
fp3Expected <- structure("7ba6d631",
call = "calcExample3",
details = c(
calcExample2 = "ded5ab1f",
calcExample3 = "94819ad1",
readData = "667d53aa",
readData2 = "041bef7f",
readData3 = "56324bcf"
)
)
fp4Expected <- structure("bd5bdbf9",
call = "calcExample4",
details = c(
calcExample4 = "9aad0909",
readData2 = "041bef7f"
)
)
expect_identical(fingerprint("calcExample2", details = TRUE, packages = "madrat"), fp2Expected)
expect_identical(fingerprint("calcExample3", details = TRUE, packages = "madrat"), fp3Expected)
expect_identical(fingerprint("calcExample4", details = TRUE, packages = "madrat"), fp4Expected)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.