# targets::tar_test() runs code from a temporary directory # to avoid writing to the user's file space. targets::tar_test("tar_render_raw() works", { skip_rmarkdown() lines <- c( "---", "title: report", "output_format: html_document", "---", "", "```{r}", "targets::tar_read(data)", "```" ) writeLines(lines, "report.Rmd") targets::tar_script({ library(tarchetypes) list( tar_target(data, data.frame(x = seq_len(26L), y = letters)), tar_render_raw("report", "report.Rmd", quiet = TRUE) ) }) # First run. suppressMessages(targets::tar_make(callr_function = NULL)) expect_equal(sort(targets::tar_progress()$name), sort(c("data", "report"))) out <- targets::tar_read(report) expect_equal(basename(out), c("report.html", "report.Rmd")) # Should not rerun the report. suppressMessages(targets::tar_make(callr_function = NULL)) progress <- targets::tar_progress() progress <- progress[progress$progress != "skipped", ] expect_equal(nrow(progress), 0L) targets::tar_script({ library(tarchetypes) list( tar_target(data, data.frame(x = rev(seq_len(26L)), y = letters)), tar_render_raw("report", "report.Rmd") ) }) # Should rerun the report. suppressMessages(targets::tar_make(callr_function = NULL)) progress <- targets::tar_progress() progress <- progress[progress$progress != "skipped", ] expect_equal(sort(progress$name), sort(c("data", "report"))) }) targets::tar_test("tar_render_raw(nested) runs from project root", { skip_rmarkdown() lines <- c( "---", "title: report", "output_format: html_document", "---", "", "```{r}", "file.create(\"here\")", "```" ) dir.create("out_tar_render") writeLines(lines, file.path("out_tar_render", "report.Rmd")) targets::tar_script({ library(tarchetypes) list( tar_render_raw("report", file.path("out_tar_render", "report.Rmd")) ) }) expect_false(file.exists("here")) expect_false(file.exists(file.path("out_tar_render", "here"))) suppressMessages(targets::tar_make(callr_function = NULL)) expect_true(file.exists("here")) expect_false(file.exists(file.path("out_tar_render", "here"))) }) targets::tar_test("tar_render_raw() for parameterized reports", { skip_rmarkdown() lines <- c( "---", "title: report", "output_format: html_document", "params:", " param1: \"default\"", " param2: \"default\"", "---", "```{r}", "print(params$param1)", "print(params$param2)", "```" ) writeLines(lines, "report.Rmd") targets::tar_script({ library(tarchetypes) value <- "abcd1234verydistinctvalue" list( tar_target(upstream, "anotherverydistinctvalue"), tar_render_raw( "report", "report.Rmd", render_arguments = quote(list(params = list(param2 = upstream))) ) ) }) suppressMessages(targets::tar_make(callr_function = NULL)) lines <- readLines("report.html") expect_true(any(grepl("anotherverydistinctvalue", lines))) })