tests/testthat/test-targets.R

library(targets)
test_that("targets works with apa6", {
  scoped_temporary_project()
  # browser()
  unlink("R", recursive = TRUE)
  worcs::worcs_project(path = ".",
                       manuscript = "github_document",
                       preregistration = "None",
                       add_license = "None",
                       use_renv = FALSE,
                       use_targets = TRUE,
                       use_git = FALSE
                       )
  lnz <- readLines("_targets.R")
  lnz[grep("tarchetypes::", lnz, fixed = TRUE)] <- gsub(")", ", cue = tar_cue(mode = 'always'))", lnz[grep("tarchetypes::", lnz, fixed = TRUE)], fixed = TRUE)
  writeLines(lnz, "_targets.R")
  # It seems like it's necessary to first render individual output chunks,
  # then render the manuscript,
  # and THEN it's possible to render the manuscript using tar_make()

  tryCatch(targets::tar_make(), error = function(e){}, warning = function(w){})
  # expect_true(file.exists("manuscript/manuscript.html"))
  tryCatch(rmarkdown::render("manuscript/manuscript.Rmd"), error = function(e){}, warning = function(w){})
  expect_true(file.exists("manuscript/manuscript.html"))
  if(file.exists("manuscript/manuscript.html")){
    file.remove("manuscript/manuscript.html")
  }
  cat(readLines("_targets.R"))
  print(list.files("./manuscript"))
  tryCatch(targets::tar_make(), error = function(e){}, warning = function(w){})
  expect_true(file.exists("manuscript/manuscript.html"))

})

# test_that("targets works with renv", {
#   scoped_temporary_project()
#   worcs::worcs_project(path = ".",
#                        manuscript = "github_document",
#                        preregistration = "None",
#                        add_license = "None",
#                        use_renv = TRUE,
#                        use_targets = TRUE,
#                        use_git = FALSE
#   )
#   tryCatch(targets::tar_make(), error = function(e){}, warning = function(w){})
#
#   expect_true(file.exists("manuscript/manuscript.html"))
#
# })
#


test_that("targets works with target markdown", {
  scoped_temporary_project()
  unlink("R", recursive = TRUE)
  worcs::worcs_project(path = ".",
                       manuscript = "target_markdown",
                       preregistration = "None",
                       add_license = "None",
                       use_renv = FALSE,
                       use_git = FALSE
  )
  # file.remove(file.path(test_dir, "_targets.rmd"))
  if(file.exists("_targets.r")){
    file.remove("_targets.r")
  }
  linz <- c("---", "  title: \"Target Markdown\"", "  output: html_document",
            "---", "", "```{r setup, include = FALSE}", "knitr::opts_chunk$set(collapse = TRUE, comment = \"#>\")",
            "```", "", "# Setup", "", "bla", "", "```{r}", "library(targets)",
            "tar_unscript()", "```", "", "# Targets", "", "bla", "", "```{targets raw-data}",
            "tar_target(raw_data, airquality)", "```", "", "blbaal", "",
            "```{targets downstream-targets}", "list(", "  tar_target(data, {raw_data[complete.cases(airquality), ]}),",
            "  tar_target(hist, hist(data$Ozone))", ")", "```", "", "try this now",
            "", "```{targets fit, tar_simple = TRUE}", "lm(Ozone ~ Wind + Temp, data)",
            "```", "", "# Pipeline", "", "run everything", "", "```{r}",
            "tar_make()", "```", "", "# Output", "", "get results", "", "```{r, message = FALSE}",
            "tar_read(fit)", "```", "", "```{r}", "tar_read(hist)", "```",
            "", "", "interactive")

  cat(linz, file = "_targets.Rmd", append = FALSE, sep = "\n")

  tryCatch(rmarkdown::render("_targets.Rmd"), error = function(e){}, warning = function(w){})

  expect_true(file.exists("_targets.html"))
  if(file.exists("_targets.html")){
    file.remove("_targets.html")
  }

  tryCatch(worcs::reproduce(check_endpoints = FALSE), error = function(e){}, warning = function(w){})
  expect_true(file.exists("_targets.html"))


})
cjvanlissa/worcs documentation built on Nov. 7, 2024, 1:20 p.m.