Nothing
tar_test("target$command", {
x <- target_init(name = "abc", expr = quote(a))
expect_silent(command_validate(x$command))
})
tar_test("target$settings", {
x <- target_init(name = "abc", expr = quote(a), description = "info")
expect_silent(settings_validate(x$settings))
expect_equal(x$settings$description, "info")
})
tar_test("target$settings$priority", {
x <- target_init(name = "abc", expr = quote(a), priority = 0.5)
expect_equal(x$settings$priority, 0.5)
})
tar_test("target seed", {
on.exit(tar_option_reset())
out <- integer(0)
tar_option_set(seed = 1L)
out[1] <- target_init(name = "x", expr = quote(a))$command$seed
out[2] <- target_init(name = "x", expr = quote(a))$command$seed
out[3] <- target_init(name = "y", expr = quote(a))$command$seed
tar_option_set(seed = 2L)
out[4] <- target_init(name = "y", expr = quote(a))$command$seed
tar_option_set(seed = NA)
out[5] <- target_init(name = "z", expr = quote(a))$command$seed
expect_equal(out[1], out[2])
expect_false(out[1] == out[3])
expect_false(out[3] == out[4])
expect_false(anyNA(out[seq_len(4)]))
expect_true(is.na(out[5]))
})
tar_test("target$value", {
x <- target_init(name = "abc", expr = quote(1L))
builder_update_build(x, baseenv())
expect_silent(value_validate(x$value))
expect_equal(x$value$object, 1L)
})
tar_test("target_get_children()", {
x <- target_init(name = "abc", expr = quote(1L))
expect_equal(target_get_children(x), character(0))
})
tar_test("target_ensure_value() loads values", {
x <- target_init(name = "abc", expr = quote(2L), format = "rds")
tmp <- tempfile()
saveRDS("abc", tmp)
file <- x$store$file
file$path <- tmp
pipeline <- pipeline_init(list(x))
for (index in seq_len(2)) {
target_ensure_value(x, pipeline)
expect_equal(x$value$object, "abc")
}
})
tar_test("target_ensure_dep()", {
skip_cran()
x <- target_init(name = "abc", quote(1), format = "rds")
y <- target_init(name = "xyz", quote(abc), format = "rds")
pipeline <- pipeline_init(list(x, y))
tmp <- tempfile()
saveRDS("value", tmp)
file <- y$store$file
file$path <- tmp
expect_null(y$value$object)
for (index in seq_len(2)) {
target_ensure_dep(x, y, pipeline)
expect_equal(y$value$object, "value")
}
})
tar_test("target_deps_shallow()", {
skip_cran()
x <- target_init("x", quote(1 + 1))
y <- target_init("y", quote(x + z))
pipeline <- pipeline_init(list(x, y))
expect_true("z" %in% y$command$deps)
expect_equal(target_deps_shallow(y, pipeline), "x")
})
tar_test("target_branches_over()", {
skip_cran()
x <- target_init("x", quote(1 + 1))
z <- target_init("z", quote(x), pattern = quote(map(x)))
expect_true(target_branches_over(z, "x"))
expect_false(target_branches_over(z, "y"))
expect_false(target_branches_over(x, "y"))
})
tar_test("target_downstream_branching()", {
skip_cran()
x <- target_init("x", quote(1 + 1))
y <- target_init("y", quote(x))
z <- target_init("z", quote(x), pattern = quote(map(x)))
w <- target_init("w", quote(x), pattern = quote(map(y)))
pipeline <- pipeline_init(list(x, y, z, w))
scheduler <- scheduler_init(pipeline, meta = meta_init())
expect_equal(target_downstream_branching(x, pipeline, scheduler), "z")
})
tar_test("target_downstream_nonbranching()", {
skip_cran()
x <- target_init("x", quote(1 + 1))
y <- target_init("y", quote(x))
z <- target_init("z", quote(x), pattern = quote(map(x)))
w <- target_init("w", quote(x), pattern = quote(map(y)))
pipeline <- pipeline_init(list(x, y, z, w))
scheduler <- scheduler_init(pipeline, meta = meta_init())
out <- target_downstream_nonbranching(x, pipeline, scheduler)
expect_equal(sort(out), sort(c("w", "y")))
})
tar_test("target_upstream_edges()", {
skip_cran()
x <- target_init(name = "x", expr = quote(a + b))
e <- remove_loops(as.data.frame(target_upstream_edges(x)))
expect_true(is.data.frame(e))
expect_equal(dim(e), c(3L, 2L))
expect_equal(unique(e$to), "x")
expect_true(all(c("a", "b") %in% e$from))
})
tar_test("error if unsupported pattern", {
skip_cran()
expect_error(
target_init(name = "abc", expr = quote(xyz), pattern = quote(nope(xyz))),
class = "tar_condition_validate"
)
})
tar_test("target_get_packages()", {
skip_cran()
x <- tar_target(x, 1, format = "fst_tbl", packages = c("tibble", "tidyr"))
out <- target_get_packages(x)
exp <- sort(c("fst", "tibble", "tidyr"))
expect_equal(out, exp)
})
tar_test("error to validate a circular target", {
skip_cran()
expect_error(
target_init(name = "abc", expr = quote(abc), pattern = quote(map(abc))),
class = "tar_condition_validate"
)
})
tar_test("targets resist self-referantiality", {
skip_cran()
x <- target_init(name = "identity", expr = quote(identity("i")))
pipeline <- pipeline_init(list(x))
local_init(pipeline)$run()
expect_equal(target_read_value(x, pipeline)$object, "i")
})
tar_test("target_gc()", {
skip_cran()
x <- target_init(name = "x", expr = quote(1), garbage_collection = TRUE)
expect_silent(target_gc(x))
x <- target_init(name = "x", expr = quote(1), garbage_collection = FALSE)
expect_silent(target_gc(x))
})
tar_test("invalidation: repeated non-branching run skipped", {
skip_cran()
local <- local_init(pipeline_order())
local$run()
out <- counter_get_names(local$scheduler$progress$completed)
exp <- pipeline_get_names(local$pipeline)
expect_equal(sort(out), sort(exp))
local <- local_init(pipeline_order())
local$run()
out <- counter_get_names(local$scheduler$progress$skipped)
exp <- pipeline_get_names(local$pipeline)
})
tar_test("invalidation: repeated branching run skipped", {
skip_cran()
local <- local_init(pipeline_map())
local$run()
out <- counter_get_names(local$scheduler$progress$completed)
exp <- pipeline_get_names(local$pipeline)
exp <- setdiff(exp, paste0("map", seq_len(6)))
exp <- grep("data[0-9]_", invert = TRUE, value = TRUE, x = exp)
expect_equal(sort(out), sort(exp))
local <- local_init(pipeline_map())
local$run()
out <- counter_get_names(local$scheduler$progress$skipped)
exp <- pipeline_get_names(local$pipeline)
exp <- setdiff(exp, paste0("map", seq_len(6)))
exp <- grep("data[0-9]_", invert = TRUE, value = TRUE, x = exp)
})
tar_test("invalidation: update an existing branch", {
skip_cran()
x <- target_init("x", quote(seq_len(3)))
y <- target_init("y", quote(x), pattern = quote(map(x)))
z <- target_init("z", quote(y), pattern = quote(map(y)))
w <- target_init("w", quote(sum(y)))
pipeline <- pipeline_init(list(x, y, z, w))
local <- local_init(pipeline)
local$run()
expect_equal(target_read_value(w)$object, 6L)
x <- target_init("x", quote(c(1L, 5L, 3L)))
y <- target_init("y", quote(x), pattern = quote(map(x)))
z <- target_init("z", quote(y), pattern = quote(map(y)))
w <- target_init("w", quote(sum(y)))
pipeline <- pipeline_init(list(x, y, z, w))
local <- local_init(pipeline)
local$run()
out <- c(
target_get_children(pipeline_get_target(pipeline, "y"))[2],
target_get_children(pipeline_get_target(pipeline, "z"))[2]
)
exp <- counter_get_names(local$scheduler$progress$completed)
expect_equal(sort(c("x", "w", out)), sort(exp))
for (branch in out) {
expect_equal(
target_read_value(pipeline_get_target(pipeline, branch))$object,
5L
)
}
expect_equal(target_read_value(w)$object, 9L)
})
tar_test("invalidation: insert a branch", {
skip_cran()
x <- target_init("x", quote(seq_len(3)))
y <- target_init("y", quote(x), pattern = quote(map(x)))
z <- target_init("z", quote(y), pattern = quote(map(y)))
pipeline <- pipeline_init(list(x, y, z))
local <- local_init(pipeline)
local$run()
x <- target_init("x", quote(c(1L, 4L, 2L, 3L)))
y <- target_init("y", quote(x), pattern = quote(map(x)))
z <- target_init("z", quote(y), pattern = quote(map(y)))
pipeline <- pipeline_init(list(x, y, z))
local <- local_init(pipeline)
local$run()
out <- c(
target_get_children(pipeline_get_target(pipeline, "y"))[2],
target_get_children(pipeline_get_target(pipeline, "z"))[2]
)
exp <- counter_get_names(local$scheduler$progress$completed)
expect_equal(sort(c("x", out)), sort(exp))
for (branch in out) {
expect_equal(
target_read_value(pipeline_get_target(pipeline, branch))$object,
4L
)
}
})
tar_test("invalidation: remove a branch", {
skip_cran()
x <- target_init("x", quote(seq_len(3)))
y <- target_init("y", quote(x), pattern = quote(map(x)))
z <- target_init("z", quote(y), pattern = quote(map(y)))
pipeline <- pipeline_init(list(x, y, z))
local <- local_init(pipeline)
local$run()
x <- target_init("x", quote(c(1L, 3L)))
y <- target_init("y", quote(x), pattern = quote(map(x)))
z <- target_init("z", quote(y), pattern = quote(map(y)))
pipeline <- pipeline_init(list(x, y, z))
local <- local_init(pipeline)
local$run()
out <- counter_get_names(local$scheduler$progress$completed)
expect_equal(out, "x")
})
tar_test("invalidation: depend on all branches", {
skip_cran()
x <- target_init("x", quote(seq_len(3)))
y <- target_init("y", quote(x), pattern = quote(map(x)))
z <- target_init("z", quote(y))
pipeline <- pipeline_init(list(x, y, z), clone_targets = FALSE)
local <- local_init(pipeline)
local$run()
out <- counter_get_names(local$scheduler$progress$completed)
exp <- c("x", "z", target_get_children(y))
expect_equal(sort(out), sort(exp))
x <- target_init("x", quote(c(1L, 5L, 3L)))
y <- target_init("y", quote(x), pattern = quote(map(x)))
z <- target_init("z", quote(y))
pipeline <- pipeline_init(list(x, y, z), clone_targets = FALSE)
local <- local_init(pipeline)
local$run()
out <- counter_get_names(local$scheduler$progress$completed)
exp <- c("x", "z", target_get_children(y)[2])
expect_equal(sort(out), sort(exp))
})
tar_test("invalidation: map over a stem with no branches previously", {
skip_cran()
pipeline <- pipeline_init(
list(
target_init("x", quote(seq_len(2L) + 10L)),
target_init("y", quote(seq_len(2L))),
target_init("z", quote(x), pattern = quote(map(x)))
)
)
local_init(pipeline = pipeline)$run()
meta <- meta_init()$database$read_condensed_data()
first_children <- unlist(meta$children[meta$name == "z"])
pipeline <- pipeline_init(
list(
target_init("x", quote(seq_len(2L) + 10L)),
target_init("y", quote(seq_len(2L))),
target_init("z", quote(y), pattern = quote(map(y)))
)
)
local <- local_init(pipeline = pipeline)
local$run()
meta <- meta_init()$database$read_condensed_data()
last_children <- unlist(meta$children[meta$name == "z"])
expect_equal(intersect(first_children, last_children), character(0))
out <- counter_get_names(local$scheduler$progress$completed)
expect_length(out, 2L)
expect_true(all(grepl("^z_", out)))
})
tar_test("invalidation: remove a function to cue a rebuild", {
skip_cran()
envir <- new.env(parent = baseenv())
tar_option_set(envir = envir)
envir$f <- identity
x <- target_init("x", quote(f(1)))
pipeline <- pipeline_init(list(x))
local <- local_init(pipeline)
local$run()
envir <- new.env(parent = baseenv())
tar_option_set(envir = envir)
x <- target_init("x", quote(f(1)))
pipeline <- pipeline_init(list(x))
local <- local_init(pipeline)
expect_error(local$run(), class = "tar_condition_run")
out <- counter_get_names(local$scheduler$progress$errored)
expect_equal(out, "x")
})
tar_test("invalidation: chg pattern iter forces downstream reaggregation", {
skip_cran()
pipeline <- pipeline_init(
list(
target_init("x", quote(seq_len(2))),
target_init(
"y",
quote(x),
pattern = quote(map(x)),
iteration = "vector"
),
target_init(
"z",
quote(y)
)
)
)
local <- local_init(pipeline)
local$run()
pipeline <- pipeline_init(
list(
target_init("x", quote(seq_len(2))),
target_init(
"y",
quote(x),
pattern = quote(map(x)),
iteration = "list"
),
target_init(
"z",
quote(y)
)
)
)
local <- local_init(pipeline)
local$run()
expect_true("z" %in% counter_get_names(local$scheduler$progress$completed))
})
tar_test("invalidation: change a nested function", {
skip_cran()
tar_script({
envir <- new.env(parent = globalenv())
evalq({
f <- function(x) {
g(x)
}
g <- function(x) {
x + 1L
}
}, envir = envir)
tar_option_set(envir = envir)
list(tar_target(x, f(1L)))
})
out <- tar_network(callr_function = NULL)$edges
expect_true(any(out$from == "g" & out$to == "f"))
expect_true(any(out$from == "f" & out$to == "x"))
tar_make(callr_function = NULL)
meta <- tar_meta(names = c("f", "g", "x"))
expect_true(all(c("f", "g", "x") %in% meta$name))
expect_equal(tar_read(x), 2L)
# Should be up to date.
tar_make(callr_function = NULL)
expect_equal(tar_progress()$progress, "skipped")
out <- tar_outdated(callr_function = NULL, targets_only = FALSE)
expect_equal(out, character(0))
# Change the inner function.
tar_script({
envir <- new.env(parent = globalenv())
evalq({
f <- function(x) {
g(x)
}
g <- function(x) {
x + 2L
}
}, envir = envir)
tar_option_set(envir = envir)
list(tar_target(x, f(1L)))
})
out <- tar_outdated(callr_function = NULL, targets_only = FALSE)
expect_true(all(c("f", "g", "x") %in% out))
tar_make(callr_function = NULL)
expect_equal(tar_progress()$progress, "completed")
expect_equal(tar_read(x), 3L)
})
tar_test("target_allow_meta()", {
target <- tar_target(x, 1, format = "rds", repository = "aws")
expect_false(target_allow_meta(target))
target <- tar_target(x, 1, format = "file", repository = "aws")
expect_false(target_allow_meta(target))
target <- tar_target(x, 1, format = "rds", repository = "local")
expect_false(target_allow_meta(target))
target <- tar_target(x, 1, format = "file", repository = "local")
expect_true(target_allow_meta(target))
})
tar_test("deprecate file_fast", {
expect_warning(
target <- tar_target(x, 1, format = "file_fast"),
class = "tar_condition_deprecate"
)
expect_equal(target$settings$format, "file")
})
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.