# All code including inline code ---- # Rmd packages listed to be found all_to_be_found <- c( "find.me", "knitr", "findme1", "findme2", "findme3", "findme4", "findme5", "findme6", "findme1a", "findme2a", "findme3a", "findme4a", "findme5a", "findme6a", "find.inline", "bookdown", "rmarkdown", "emo", "findme.quarto", "utils" ) # One Rmd with YAML --- test_that("rmd well parsed", { # Multiple outputs res <- sort(attachment::att_from_rmd(path = "yaml_rmd.Rmd")) expect_equal(sort(res), sort(c( "emo", "bookdown", "rmarkdown", "knitr"))) # One output res <- sort(attachment::att_from_rmd(path = "f1.Rmd")) expect_equal(sort(res), sort(sort(setdiff( all_to_be_found, c("emo", "rmarkdown", "findme.quarto", "utils"))))) }) # A directory ---- test_that("rmds well parsed", { res <- sort(attachment::att_from_rmds(path = ".")) expect_equal(sort(res), sort(all_to_be_found)) }) # Without inline code ---- test_that("rmd well parsed", { res <- sort(attachment::att_from_rmds(path = ".", inline = FALSE)) # attachment::att_from_rmd("f1.Rmd") expect_equal(sort(res), sort(setdiff(all_to_be_found, c("find.inline", "emo")))) }) # Test inside ---- test_that("test inside rmd works", { if (isTRUE(rmarkdown::pandoc_available("1.12.3"))) { success_file <- rmarkdown::render("insidermd.Rmd", quiet = TRUE) expect_equal(basename(success_file), "insidermd.html") # clean file.remove(success_file) } else { expect_error(rmarkdown::render("insidermd.Rmd", quiet = TRUE)) } }) # Test quarto and new way of chunk options with knitr>=1.35 ---- if (utils::packageVersion("knitr") >= "1.35") { test_that("att_from_rmds with qmd works", { res <- attachment::att_from_rmds(path = "quarto.qmd") expect_true("findme.quarto" %in% res) expect_true(!"dontfindme.quarto" %in% res) }) test_that("att_from_rmd with qmd works", { res <- attachment::att_from_rmd(path = "quarto.qmd") expect_true("findme.quarto" %in% res) expect_true(!"dontfindme.quarto" %in% res) }) test_that("att_from_qmds works", { res <- attachment::att_from_qmds(path = "quarto.qmd") expect_true("findme.quarto" %in% res) expect_true(!"dontfindme.quarto" %in% res) }) test_that("att_from_qmd qmd works", { res <- attachment::att_from_qmd(path = "quarto.qmd") expect_true("findme.quarto" %in% res) expect_true(!"dontfindme.quarto" %in% res) }) } # Test that warn level is set back to user's one after ---- test_that("rmds well parsed", { withr::with_options(list(warn = 0), { res <- sort(attachment::att_from_rmds(path = ".")) expect_equal(sort(res), sort(all_to_be_found)) expect_equal(getOption("warn"), 0) }) withr::with_options(list(warn = -1), { res <- sort(attachment::att_from_rmds(path = ".")) expect_equal(sort(res), sort(all_to_be_found)) expect_equal(getOption("warn"), -1) }) }) test_that("folder_to_exclude works in att_from_rmds", { dir_with_Rmd <- tempfile(pattern = "rmds") dir.create(dir_with_Rmd) file.copy("f1.Rmd", to = file.path(dir_with_Rmd, "f1.Rmd")) dir.create(file.path(dir_with_Rmd,"renv")) dir.create(file.path(dir_with_Rmd,"avoid")) dir.create(file.path(dir_with_Rmd,"keep")) file.copy("f1.Rmd", to = file.path(dir_with_Rmd,"renv", "f3.Rmd")) #library(dont.find.me3) file.copy("f1.Rmd", to = file.path(dir_with_Rmd,"avoid", "f4.Rmd")) #library(dont.find.me4) file.copy("f1.Rmd", to = file.path(dir_with_Rmd,"keep", "f5.Rmd")) #library(find.me5.from.keep) cat(" ```{r} library(find.me5.from.keep) ``` ",append = TRUE,file = file.path(dir_with_Rmd,"keep", "f5.Rmd")) cat(" ```{r} library(dont.find.me3) ``` ",append = TRUE,file = file.path(dir_with_Rmd,"renv", "f3.Rmd")) cat(" ```{r} library(dont.find.me4) ``` ",append = TRUE,file = file.path(dir_with_Rmd,"avoid", "f4.Rmd")) res_dir <- att_from_rmds(path = dir_with_Rmd,folder_to_exclude = c("renv","avoid"),recursive = TRUE) expect_true("find.me5.from.keep" %in% res_dir) expect_false("dont.find.me3" %in% res_dir) expect_false("dont.find.me4" %in% res_dir) })