tests/test2/test-render.R

library(testit)

tmpin = tempfile(fileext = ".Rmd")
file.copy("parameterized.Rmd", tmpin)
tmpout = tempfile(fileext = ".html")
tmpout_file = basename(tmpout)

options(servr.daemon = TRUE)
s = xaringan::inf_mr(
  tmpin, dirname(tmpout), output_file = tmpout_file, quiet = TRUE
)
s$stop_server()
params_top_level = readLines(tmpout)

count_matches = function(pattern, text) sum(grepl(pattern, text, fixed = TRUE))

assert('parameterized slides uses top-level `params` in YAML', {
  (count_matches("params$foo = oof", params_top_level) %==% 1L)
  (count_matches("params$bar = rab", params_top_level) %==% 1L)
  (count_matches("params$baz = zab", params_top_level) %==% 1L)
})

s = xaringan::inf_mr(
  tmpin, dirname(tmpout), params = list(foo = "hello", bar = "world"),
  output_file = tmpout_file, quiet = TRUE
)
s$stop_server()
params_top_level = readLines(tmpout)

assert('inf_mr(...) overrides `params` in YAML', {
  (count_matches("params$foo = oof", params_top_level) %==% 0L)
  (count_matches("params$foo = hello", params_top_level) %==% 1L)
  (count_matches("params$bar = rab", params_top_level) %==% 0L)
  (count_matches("params$bar = world", params_top_level) %==% 1L)
})

assert('inf_mr(...) params falls back to top-level `params` in YAML', {
  (count_matches("params$baz = zab", params_top_level) %==% 1L)
})

Try the xaringan package in your browser

Any scripts or data that you put into this service are public.

xaringan documentation built on Dec. 28, 2022, 1:35 a.m.