Nothing
drake_context("examples")
test_with_dir("examples are listed and written", {
skip_on_cran() # CRAN gets essential tests only (check time limits).
skip_if_not_installed("curl")
skip_if_not_installed("downloader")
if (!curl::has_internet()) {
skip("no internet connection")
}
url <- "https://wlandau.github.io/drake-examples/examples.md" # nolint
tryCatch(
mem <- curl::curl_fetch_memory(url),
error = function(e) {
skip("test URL unreachable")
}
)
x <- drake_examples()
expect_true(is.character(x) & length(x) > 0)
example <- "main"
expect_false(file.exists(example))
drake_example(example)
expect_true(file.exists(example))
expect_true(file.info(example)$isdir)
unlink(example, recursive = TRUE, force = TRUE)
expect_warning(drake_example(example, destination = getwd()))
})
test_with_dir("mtcars example works", {
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
load_mtcars_example(envir = e)
expect_warning(
load_mtcars_example(envir = e, overwrite = TRUE),
regexp = "Overwriting"
)
my_plan <- e$my_plan
config <- drake_config(
my_plan,
envir = e,
jobs = jobs,
parallelism = parallelism,
verbose = 0L,
caching = caching
)
config$plan <- my_plan
dats <- c("small", "large")
config$targets <- dats
testrun(config)
con <- testconfig(config)
expect_true(is.list(deps_profile_impl(
target = "small", config = con)))
expect_equal(sort(justbuilt(con)), sort(dats))
remove_these <- intersect(dats, ls(config$envir))
rm(list = remove_these, envir = config$envir)
config$targets <- config$plan$target
testrun(config)
jb <- justbuilt(config)
expect_true("report" %in% jb)
expect_false(any(dats %in% jb))
# Check that file is not rehashed.
# Code coverage should cover every line of static_storage_hash().
expect_true(is.character(static_storage_hash(
target = reencode_path("report.Rmd"),
config = con,
size_threshold = -1
)))
config <- drake_config(
my_plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L)
expect_equal(outdated_impl(config), character(0))
# Change an imported function
e$reg2 <- function(d) {
d$x3 <- d$x ^ 3
lm(y ~ x3, data = d)
}
config <- drake_config(
my_plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L)
to_build <- sort(c(
"report", "coef_regression2_large",
"coef_regression2_small", "regression2_large", "regression2_small",
"summ_regression2_large", "summ_regression2_small"
))
expect_equal(sort(outdated_impl(config = config)), to_build)
config$plan <- my_plan
testrun(config)
expect_equal(sort(justbuilt(config)), to_build)
config <- drake_config(
my_plan, envir = e, jobs = jobs, parallelism = parallelism,
verbose = 1L)
expect_equal(sort(outdated_impl(config = config)), character(0))
# Take this opportunity to test tidyselect API. Saves test time that way.
# loadd() # nolint
coefs <- sort(
c(
"coef_regression1_large",
"coef_regression1_small",
"coef_regression2_large",
"coef_regression2_small"
)
)
if (requireNamespace("tidyselect", quietly = TRUE)) {
e <- new.env(parent = globalenv())
expect_error(loadd(not_a_target, envir = e))
expect_equal(ls(envir = e), character(0))
for (i in 1:2) {
loadd(starts_with("coef"), envir = e)
expect_equal(sort(ls(envir = e)), coefs)
rm(list = coefs, envir = e)
}
# build_times() # nolint
skip_if_not_installed("lubridate")
all_times <- build_times()
expect_true(nrow(all_times) >= nrow(my_plan))
some_times <- build_times(starts_with("coef"))
expect_equal(sort(some_times$target), coefs)
# clean() # nolint
x <- sort(cached())
expect_true(all(coefs %in% x))
clean(starts_with("coef"))
expect_equal(sort(cached()), setdiff(x, coefs))
}
# knitr file deps
# Included here instead of test-knitr.R because report.md already exists.
# Saves time that way.
# But we can remove it all when we deprecate the single-quoted stuff
# and users know to rely on knitr_input().
x <- drake_plan(
a = knitr::knit(knitr_in("report.Rmd")), # nolint
b = knitr::knit(knitr_in("report.md")), # nolint
c = knitr::knit("nonfile"),
d = rmarkdown::render("report.Rmd"), # nolint
e = rmarkdown::render("report.md"), # nolint
f = rmarkdown::render("nonfile")
)
suppressWarnings(con <- drake_config(plan = x))
for (target in c("a")) {
expect_true(
"small" %in% deps_target_impl(target, con, character_only = TRUE)$name
)
}
for (target in c("b", "c")) {
expect_false(
"small" %in% deps_target_impl(target, con, character_only = TRUE)$name
)
}
# clean_mtcars_example() # nolint
for (file in c(".drake", "report.Rmd")) {
expect_true(file.exists(file))
}
clean_mtcars_example()
for (file in c(".drake", "report.Rmd")) {
expect_false(file.exists(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.