Nothing
drake_context("triggers")
test_with_dir("empty triggers return logical", {
skip_on_cran() # CRAN gets essential tests only (check time limits).
config <- drake_config(drake_plan(x = 1))
expect_identical(trigger_depend("x", list(), config), FALSE)
expect_identical(trigger_command("x", list(), config), FALSE)
expect_identical(trigger_file("x", list(), config), FALSE)
expect_identical(trigger_format("x", NULL, config), FALSE)
expect_identical(trigger_condition("x", list(), config), FALSE)
expect_identical(trigger_change("x", list(), config), FALSE)
})
test_with_dir("triggers can be expressions", {
skip_on_cran() # CRAN gets essential tests only (check time limits).
plan <- drake_plan(x = target(1, trigger = 123))
plan$trigger[[1]] <- expression(trigger(condition = TRUE))
for (i in 1:3) {
cache <- storr::storr_environment()
make(
plan,
session_info = FALSE,
cache = cache
)
config <- drake_config(
plan,
session_info = FALSE,
cache = cache
)
expect_equal(justbuilt(config), "x")
}
})
test_with_dir("bad condition trigger", {
plan <- drake_plan(x = 1)
cache <- storr::storr_environment()
make(
plan, session_info = FALSE, cache = cache,
trigger = trigger(condition = NULL)
)
expect_error(
make(
plan, session_info = FALSE, cache = cache,
trigger = trigger(condition = NULL)
),
regexp = "logical of length 1"
)
})
test_with_dir("triggers in plan override make(trigger = whatever)", {
skip_on_cran() # CRAN gets essential tests only (check time limits).
saveRDS(1, "file.rds")
plan <- drake_plan(
x = readRDS(file_in("file.rds")),
y = target(
readRDS(file_in("file.rds")),
trigger = trigger(file = TRUE)
)
)
make(plan, session_info = FALSE)
config <- drake_config(plan, session_info = FALSE)
expect_equal(sort(justbuilt(config)), c("x", "y"))
saveRDS(2, "file.rds")
expect_equal(sort(outdated_impl(config)), c("x", "y"))
make(plan, trigger = trigger(file = FALSE), session_info = FALSE)
config <- drake_config(
plan, trigger = trigger(file = FALSE), session_info = FALSE)
expect_equal(justbuilt(config), "y")
})
test_with_dir("change trigger on a fresh build", {
skip_on_cran() # CRAN gets essential tests only (check time limits).
saveRDS(1, "file.rds")
plan <- drake_plan(
x = target(1 + 1, trigger = trigger(
condition = FALSE,
command = FALSE,
depend = FALSE,
file = FALSE,
change = readRDS("file.rds"))
)
)
make(plan, session_info = FALSE)
config <- drake_config(plan, session_info = FALSE)
expect_equal(justbuilt(config), "x")
make(plan, session_info = FALSE)
config <- drake_config(plan, session_info = FALSE)
expect_equal(justbuilt(config), character(0))
saveRDS(2, "file.rds")
make(plan, session_info = FALSE)
config <- drake_config(plan, session_info = FALSE)
expect_equal(justbuilt(config), "x")
})
test_with_dir("trigger() function works", {
skip_on_cran() # CRAN gets essential tests only (check time limits).
x <- 1
y <- trigger(
command = TRUE,
depend = FALSE,
file = FALSE,
format = FALSE,
condition = 1 + 1,
change = sqrt(!!x)
)
z <- list(
command = TRUE,
depend = FALSE,
file = FALSE,
seed = TRUE,
format = FALSE,
condition = quote(1 + 1),
change = quote(sqrt(1)),
mode = "whitelist"
)
class(z) <- c("drake_triggers", "drake")
expect_equal(y, z)
})
test_with_dir("can detect trigger deps without reacting to them", {
skip_on_cran() # CRAN gets essential tests only (check time limits).
skip_if_not_installed("knitr")
writeLines("123", "knitr.Rmd")
saveRDS(0, "file.rds")
f <- function(x) {
identity(x)
}
plan <- drake_plan(
x = target(
command = 1 + 1,
trigger = trigger(
condition = {
knitr_in("knitr.Rmd")
f(0) + readRDS(file_in("file.rds"))
},
command = FALSE,
file = FALSE,
depend = TRUE,
change = NULL
)
)
)
config <- drake_config(
plan, session_info = FALSE, cache = storr::storr_environment(),
log_progress = TRUE)
deps <- c(reencode_path(c("file.rds", "knitr.Rmd")), "f")
expect_true(all(deps %in% igraph::V(config$graph)$name))
expect_equal(sort(deps_graph("x", config$graph)), sort(deps))
expect_equal(outdated_impl(config), "x")
make_impl(config = config)
expect_equal(justbuilt(config), "x")
expect_equal(outdated_impl(config), character(0))
make_impl(config = config)
nobuild(config)
f <- function(x) {
identity(x) || FALSE
}
expect_equal(outdated_impl(config), character(0))
make_impl(config = config)
nobuild(config)
})
test_with_dir("same, but with global trigger", {
skip_on_cran() # CRAN gets essential tests only (check time limits).
skip_if_not_installed("knitr")
writeLines("123", "knitr.Rmd")
saveRDS(0, "file.rds")
f <- function(x) {
identity(x)
}
plan <- drake_plan(x = 1 + 1)
config <- drake_config(
plan, session_info = FALSE, cache = storr::storr_environment(),
log_progress = TRUE, trigger = trigger(
condition = {
knitr_in("knitr.Rmd")
f(0) + readRDS(file_in("file.rds"))
},
command = FALSE,
file = FALSE,
depend = TRUE,
change = NULL
)
)
deps <- c(reencode_path(c("file.rds", "knitr.Rmd")), "f")
expect_true(all(deps %in% igraph::V(config$graph)$name))
expect_equal(sort(deps_graph("x", config$graph)), sort(deps))
expect_equal(outdated_impl(config), "x")
make_impl(config = config)
expect_equal(justbuilt(config), "x")
expect_equal(outdated_impl(config), character(0))
make_impl(config = config)
nobuild(config)
f <- function(x) {
identity(x) || FALSE
}
expect_equal(outdated_impl(config), character(0))
make_impl(config = config)
nobuild(config)
})
test_with_dir("trigger does not block out command deps", {
skip_on_cran() # CRAN gets essential tests only (check time limits).
skip_if_not_installed("knitr")
writeLines("123", "knitr.Rmd")
saveRDS(0, "file.rds")
f <- function(x) {
identity(x)
}
plan <- drake_plan(
x = target(
command = {
knitr_in("knitr.Rmd")
f(0) + readRDS(file_in("file.rds"))
},
trigger = trigger(
condition = {
knitr_in("knitr.Rmd")
f(FALSE) + readRDS(file_in("file.rds"))
},
command = FALSE,
file = TRUE,
depend = TRUE,
change = NULL
)
)
)
config <- drake_config(
plan, session_info = FALSE, cache = storr::storr_environment(),
log_progress = TRUE)
deps <- c(reencode_path("file.rds"), reencode_path("knitr.Rmd"), "f")
expect_true(all(deps %in% igraph::V(config$graph)$name))
expect_equal(sort(deps_graph("x", config$graph)), sort(deps))
expect_equal(outdated_impl(config), "x")
make(
plan, session_info = FALSE,
cache = config$cache,
log_progress = TRUE,
memory_strategy = "preclean"
)
expect_equal(justbuilt(config), "x")
expect_equal(outdated_impl(config), character(0))
make_impl(config = config)
nobuild(config)
f <- function(x) {
identity(x) || FALSE
}
expect_equal(outdated_impl(config), "x")
make_impl(config = config)
expect_equal(justbuilt(config), "x")
writeLines("456", "knitr.Rmd")
expect_equal(outdated_impl(config), "x")
make_impl(config = config)
expect_equal(justbuilt(config), "x")
saveRDS(2, "file.rds")
expect_equal(outdated_impl(config), "x")
make_impl(config = config)
expect_equal(justbuilt(config), "x")
})
test_with_dir("same, but with global change trigger", {
skip_on_cran() # CRAN gets essential tests only (check time limits).
skip_if_not_installed("knitr")
writeLines("123", "knitr.Rmd")
saveRDS(0, "file.rds")
f <- function(x) {
identity(x)
}
plan <- drake_plan(
x = {
knitr_in("knitr.Rmd")
f(0) + readRDS(file_in("file.rds"))
}
)
config <- drake_config(
plan, session_info = FALSE, cache = storr::storr_environment(),
log_progress = TRUE, trigger = trigger(
change = {
knitr_in("knitr.Rmd")
f(FALSE) + readRDS(file_in("file.rds"))
},
command = FALSE,
file = TRUE,
depend = TRUE,
condition = FALSE
)
)
deps <- c(file_store("file.rds"), file_store("knitr.Rmd"), "f")
expect_true(all(deps %in% igraph::V(config$graph)$name))
expect_equal(sort(deps_graph("x", config$graph)), sort(deps))
expect_equal(outdated_impl(config), "x")
make(
plan,
session_info = FALSE,
cache = config$cache,
log_progress = TRUE, trigger = trigger(
change = {
knitr_in("knitr.Rmd")
f(FALSE) + readRDS(file_in("file.rds"))
},
command = FALSE,
file = TRUE,
depend = TRUE,
condition = FALSE
),
memory_strategy = "preclean"
)
expect_equal(justbuilt(config), "x")
expect_equal(outdated_impl(config), character(0))
make(
plan,
session_info = FALSE,
cache = config$cache,
log_progress = TRUE, trigger = trigger(
change = {
knitr_in("knitr.Rmd")
f(FALSE) + readRDS(file_in("file.rds"))
},
command = FALSE,
file = TRUE,
depend = TRUE,
condition = FALSE
),
memory_strategy = "preclean"
)
nobuild(config)
f <- function(x) {
identity(x) || FALSE
}
expect_equal(outdated_impl(config), "x")
make_impl(config = config)
expect_equal(justbuilt(config), "x")
writeLines("456", "knitr.Rmd")
expect_equal(outdated_impl(config), "x")
make_impl(config = config)
expect_equal(justbuilt(config), "x")
saveRDS(2, "file.rds")
expect_equal(outdated_impl(config), "x")
make_impl(config = config)
expect_equal(justbuilt(config), "x")
})
test_with_dir("triggers can be NA in the plan", {
skip_on_cran()
cache <- storr::storr_environment()
expect_silent(
make(
drake_plan(x = target(1, trigger = NA)),
session_info = FALSE,
cache = cache,
verbose = 0L
)
)
config <- drake_config(
drake_plan(x = target(1, trigger = NA)),
session_info = FALSE,
cache = cache,
verbose = 0L
)
expect_equal(justbuilt(config), "x")
})
test_with_dir("deps load into memory for complex triggers", {
skip_on_cran()
scenario <- get_testing_scenario()
e <- eval(parse(text = scenario$envir))
jobs <- scenario$jobs
parallelism <- scenario$parallelism
caching <- scenario$caching
plan <- drake_plan(
psi_1 = (sqrt(5) + 1) / 2,
psi_2 = target(
command = (sqrt(5) - 1) / 2,
trigger = trigger(condition = psi_1 > 0)
),
psi_3 = target(
command = 1,
trigger = trigger(change = psi_2)
)
)
for (i in 1:3) {
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 0L, caching = caching, session_info = FALSE
)
expect_true(all(plan$target %in% cached()))
}
config <- drake_config(plan)
expect_equal(config$spec[["psi_2"]]$deps_condition$memory, "psi_1")
expect_equal(config$spec[["psi_3"]]$deps_change$memory, "psi_2")
})
test_with_dir("trigger components react appropriately", {
skip_on_cran()
skip_if_not_installed("knitr")
scenario <- get_testing_scenario()
e <- eval(parse(text = scenario$envir))
jobs <- scenario$jobs
parallelism <- scenario$parallelism
caching <- scenario$caching
eval(
quote(f <- function(x) {
1 + x
}),
envir = e
)
writeLines("1234", "report.Rmd")
saveRDS(1, "file.rds")
saveRDS(1, "change.rds")
saveRDS(TRUE, "condition.rds")
plan <- drake_plan(
missing = target(
NULL,
trigger = trigger(command = FALSE, depend = FALSE, file = FALSE)
),
condition = target(
NULL,
trigger = trigger(
condition = readRDS("condition.rds"),
command = FALSE, depend = FALSE, file = FALSE
)
),
command = target(
NULL,
trigger = trigger(command = TRUE, depend = FALSE, file = FALSE)
),
depend = target(
NULL,
trigger = trigger(command = FALSE, depend = TRUE, file = FALSE)
),
file = target(
NULL,
trigger = trigger(command = FALSE, depend = FALSE, file = TRUE)
),
change = target(
NULL,
trigger = trigger(
change = readRDS("change.rds"),
command = FALSE, depend = FALSE, file = FALSE
)
)
)
commands <- paste0("{
knitr_in(\"report.Rmd\")
out <- f(readRDS(file_in(\"file.rds\")))
saveRDS(out, file_out(\"out_", plan$target, ".rds\"))
out
}")
commands <- lapply(commands, safe_parse)
plan$command <- commands
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
log_progress = TRUE
)
expect_equal(sort(justbuilt(config)), sort(plan$target))
expect_equal(outdated_impl(config), "condition")
simple_plan <- plan
simple_plan$trigger <- NULL
make(
simple_plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 0L, caching = caching, session_info = FALSE
)
simple_config <- drake_config(
simple_plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 0L, caching = caching, session_info = FALSE,
log_progress = TRUE
)
# Condition trigger
for (i in 1:2) {
expect_equal(sort(outdated_impl(config)), "condition")
make_impl(config = config)
expect_equal(sort(justbuilt(config)), "condition")
}
saveRDS(FALSE, "condition.rds")
expect_equal(outdated_impl(simple_config), character(0))
expect_equal(outdated_impl(config), character(0))
for (i in 1:2) {
make_impl(config = config)
nobuild(config)
}
# Change trigger
saveRDS(2, "change.rds")
expect_equal(sort(outdated_impl(config)), "change")
expect_equal(outdated_impl(simple_config), character(0))
make_impl(config = config)
expect_equal(sort(justbuilt(config)), "change")
expect_equal(outdated_impl(config), character(0))
expect_equal(outdated_impl(simple_config), character(0))
# File trigger: input files
saveRDS(2, "file.rds")
expect_equal(sort(outdated_impl(config)), "file")
make_impl(config = config)
expect_equal(sort(justbuilt(config)), "file")
expect_equal(
sort(outdated_impl(simple_config)),
sort(setdiff(plan$target, "file"))
)
expect_equal(outdated_impl(config), character(0))
# File trigger: knitr files
writeLines("5678", "report.Rmd")
expect_equal(sort(outdated_impl(config)), "file")
make_impl(config = config)
expect_equal(sort(justbuilt(config)), "file")
expect_equal(
sort(outdated_impl(simple_config)),
sort(setdiff(plan$target, "file"))
)
expect_equal(outdated_impl(config), character(0))
# File trigger: output files
for (target in plan$target) {
saveRDS("1234", paste0("out_", target, ".rds"))
}
expect_equal(sort(outdated_impl(config)), "file")
make_impl(config = config)
expect_equal(sort(justbuilt(config)), "file")
expect_equal(
sort(outdated_impl(simple_config)),
sort(setdiff(plan$target, "file"))
)
expect_equal(outdated_impl(config), character(0))
# Done with the change trigger
plan <- plan[1:5, ]
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 0L, caching = caching, log_progress = TRUE,
session_info = FALSE
)
simple_plan <- simple_plan[1:5, ]
simple_config <- drake_config(
simple_plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 0L, caching = caching, log_progress = TRUE,
session_info = FALSE
)
make_impl(config = simple_config)
# Command trigger
new_commands <- paste0("{
knitr_in(\"report.Rmd\")
out <- f(1 + readRDS(file_in(\"file.rds\")))
saveRDS(out, file_out(\"out_", plan$target, ".rds\"))
out
}")
new_commands <- lapply(new_commands, safe_parse)
plan$command <- simple_plan$command <- new_commands
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 0L, caching = caching, log_progress = TRUE,
session_info = FALSE
)
simple_config <- drake_config(
simple_plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 0L, caching = caching, log_progress = TRUE,
session_info = FALSE
)
expect_equal(sort(outdated_impl(config)), "command")
make_impl(config = config)
expect_equal(sort(justbuilt(config)), "command")
expect_equal(
sort(outdated_impl(simple_config)),
sort(setdiff(plan$target, "command"))
)
expect_equal(outdated_impl(config), character(0))
make_impl(config = simple_config)
expect_equal(outdated_impl(config), character(0))
# Depend trigger
eval(
quote(f <- function(x) {
2 + x
}),
envir = e
)
expect_equal(sort(outdated_impl(config)), "depend")
make_impl(config = config)
expect_equal(sort(justbuilt(config)), "depend")
expect_equal(
sort(outdated_impl(simple_config)),
sort(setdiff(plan$target, "depend"))
)
expect_equal(outdated_impl(config), character(0))
make_impl(config = simple_config)
expect_equal(outdated_impl(config), character(0))
})
test_with_dir("trigger whitelist mode", {
skip_on_cran()
scenario <- get_testing_scenario()
e <- eval(parse(text = scenario$envir))
jobs <- scenario$jobs
parallelism <- scenario$parallelism
caching <- scenario$caching
eval(
quote(f <- function(x) {
1 + x
}),
envir = e
)
plan <- drake_plan(y = f(1))
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE
)
expect_equal(justbuilt(config), "y")
expect_equal(outdated_impl(config), character(0))
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = FALSE, mode = "whitelist")
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = FALSE, mode = "whitelist")
)
expect_equal(justbuilt(config), character(0))
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = TRUE, mode = "whitelist")
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = TRUE, mode = "whitelist")
)
expect_equal(justbuilt(config), "y")
eval(
quote(f <- function(x) {
2 + x
}),
envir = e
)
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = FALSE, mode = "whitelist")
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = FALSE, mode = "whitelist")
)
expect_equal(justbuilt(config), "y")
eval(
quote(f <- function(x) {
3 + x
}),
envir = e
)
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = TRUE, mode = "whitelist")
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = TRUE, mode = "whitelist")
)
expect_equal(justbuilt(config), "y")
})
test_with_dir("trigger blacklist mode", {
skip_on_cran()
scenario <- get_testing_scenario()
e <- eval(parse(text = scenario$envir))
jobs <- scenario$jobs
parallelism <- scenario$parallelism
caching <- scenario$caching
eval(
quote(f <- function(x) {
1 + x
}),
envir = e
)
plan <- drake_plan(y = f(1))
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE
)
expect_equal(justbuilt(config), "y")
expect_equal(outdated_impl(config), character(0))
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = FALSE, mode = "blacklist")
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = FALSE, mode = "blacklist")
)
expect_equal(justbuilt(config), character(0))
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = TRUE, mode = "blacklist")
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = TRUE, mode = "blacklist")
)
expect_equal(justbuilt(config), character(0))
eval(
quote(f <- function(x) {
2 + x
}),
envir = e
)
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = FALSE, mode = "blacklist")
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = FALSE, mode = "blacklist")
)
expect_equal(justbuilt(config), character(0))
eval(
quote(f <- function(x) {
3 + x
}),
envir = e
)
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = TRUE, mode = "blacklist")
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = TRUE, mode = "blacklist")
)
expect_equal(justbuilt(config), "y")
})
test_with_dir("trigger condition mode", {
skip_on_cran()
scenario <- get_testing_scenario()
e <- eval(parse(text = scenario$envir))
jobs <- scenario$jobs
parallelism <- scenario$parallelism
caching <- scenario$caching
eval(
quote(f <- function(x) {
1 + x
}),
envir = e
)
plan <- drake_plan(y = f(1))
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE
)
expect_equal(justbuilt(config), "y")
expect_equal(outdated_impl(config), character(0))
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = FALSE, mode = "condition")
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = FALSE, mode = "condition")
)
expect_equal(justbuilt(config), character(0))
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = TRUE, mode = "condition")
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = TRUE, mode = "condition")
)
expect_equal(justbuilt(config), "y")
eval(
quote(f <- function(x) {
2 + x
}),
envir = e
)
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = FALSE, mode = "condition")
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = FALSE, mode = "condition")
)
expect_equal(justbuilt(config), character(0))
eval(
quote(f <- function(x) {
3 + x
}),
envir = e
)
make(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = TRUE, mode = "condition")
)
config <- drake_config(
plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L, caching = caching, session_info = FALSE,
trigger = trigger(condition = TRUE, mode = "condition")
)
expect_equal(justbuilt(config), "y")
})
test_with_dir("files are collected/encoded from all triggers", {
skip_on_cran()
skip_if_not_installed("knitr")
exp <- sort(c(
paste0(
rep(c("command_", "condition_", "change_"), times = 3),
rep(c("in", "out", "knitr_in"), each = 3)
)
))
exp <- setdiff(exp, c("condition_out", "change_out"))
file.create(exp)
plan <- drake_plan(
x = target(
command = {
file_in("command_in")
file_out("command_out")
knitr_in("command_knitr_in")
},
trigger = trigger(
condition = {
file_in("condition_in")
file_out("condition_out")
knitr_in("condition_knitr_in")
},
change = {
file_in("change_in")
file_out("change_out")
knitr_in("change_knitr_in")
}
)
)
)
config <- drake_config(plan)
deps_build <- redecode_path(unlist(config$spec[["x"]]$deps_build))
deps_condition <- redecode_path(
unlist(config$spec[["x"]]$deps_condition))
deps_change <- redecode_path(unlist(config$spec[["x"]]$deps_change))
expect_equal(
sort(deps_build),
sort(c("command_in", "command_out", "command_knitr_in"))
)
expect_equal(
sort(deps_condition),
sort(c("condition_in", "condition_knitr_in"))
)
expect_equal(
sort(deps_change),
sort(c("change_in", "change_knitr_in"))
)
})
test_with_dir("GitHub issue #704", {
add <- function(a, b) {
a + b
}
square <- function(x) {
x ^ 2
}
rand_is_even <- function(samp_size) {
num <- sample(samp_size, 1)
if (num %% 2 == 0) {
TRUE
} else {
FALSE
}
}
check_plan <- function(plan) {
cache <- storr::storr_environment()
make(plan, cache = cache, session_info = FALSE)
expect_true(is.numeric(cache$get("first")))
expect_true(is.numeric(cache$get("second")))
}
plan <- drake_plan(
first = add(2, 3),
second = target(
command = square(first),
trigger = trigger(
condition = rand_is_even(first)
)
)
)
check_plan(plan)
plan <- drake_plan(
first = add(2, 3),
second = target(
command = square(first),
trigger = trigger(
change = rand_is_even(first)
)
)
)
check_plan(plan)
})
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.