tests/testthat/test-github_document.R

# TODO: to remove when switching the package to edition 3
local_edition(3)

test_that("toc has correct identifier", {
  skip_on_cran() # avoid pandoc issue on CRAN
  skip_if_not_pandoc("2.10.1") # changes in gfm writer break this test for earlier versions
  tmp_file <- local_rmd_file(
    c("# 10 Section","","Sentence.","", "# Header","","Sentence ")
  )
  pandoc_version <- if (pandoc_available("3")) {
    "pandoc-3"
  } else if (pandoc_available("2.18.0.1")) {
    "after-pandoc-2.18"
  } else if (pandoc_available("2.18")) {
    "pandoc-2.18"
  } else {
    "before-pandoc-2.18"
  }
  res <- render(tmp_file, github_document(toc = TRUE, html_preview = FALSE))
  expect_snapshot_file(res, "github-toc.md", compare = compare_file_text, variant = pandoc_version)
})

test_that("toc has correct identifier also when sections are numbered ", {
  skip_on_cran() # avoid pandoc issue on CRAN
  skip_if_not_pandoc("2.10.1") # changes in gfm writer break this test for earlier versions
  tmp_file <- local_rmd_file(
    c("# Section","","Sentence.","", "# Header","","Sentence ")
  )
  pandoc_version <- if (pandoc_available("3")) {
    "pandoc-3"
  } else if (pandoc_available("2.18.0.1")) {
    "after-pandoc-2.18"
  } else if (pandoc_available("2.18")) {
    "pandoc-2.18"
  } else {
    "before-pandoc-2.18"
  }
  res <- render(tmp_file, github_document(toc = TRUE, number_sections = TRUE, html_preview = FALSE))
  expect_snapshot_file(res, "github-toc-numbered.md", compare = compare_file_text, variant = pandoc_version)
})


test_that("github_document produces atx-header", {
  skip_on_cran() # avoid pandoc issue on CRAN
  h <- paste0(Reduce(paste0, rep("#", 5), accumulate = TRUE), " title ", 1:5, "\n\n")
  tmp_file <- local_rmd_file(h)
  res <- render(tmp_file, github_document(html_preview = FALSE))
  expect_snapshot_file(res, "github-atx.md", compare = compare_file_text)
})

test_that("github_document supports native math", {
  skip_on_cran()
  skip_if_not_pandoc("2.10.1")
  tmp_file <- local_rmd_file(c(
    "**The Cauchy-Schwarz Inequality**",
    "$$\\sum_{k=1}^n$$",
    "",
    "This sentence uses `$` delimiters to show math inline:  $\\sqrt{3x-1}+(1+x)^2$"
  ))
  res <- .render_and_read(tmp_file, output_format = github_document(html_preview = FALSE))
  expect_match(res, "$$\\sum_{k=1}^n$$", fixed = TRUE, all = FALSE)
  expect_match(res, "$\\sqrt{3x-1}+(1+x)^2$", fixed = TRUE, all = FALSE)
})

test_that("github_document supports math with webtex", {
  skip_on_cran()
  skip_if_not_pandoc("2.0.4")
  skip_if_offline("latex.codecogs.com")
  tmp_file <- local_rmd_file(c(
    "**The Cauchy-Schwarz Inequality**",
    "$$\\sum_{k=1}^n$$",
    "",
    "This sentence uses `$` delimiters to show math inline:  $\\sqrt{3x-1}+(1+x)^2$"
  ))
  res <- .render_and_read(tmp_file, output_format = github_document(html_preview = FALSE, math_method = "webtex"))
  expect_match(res, "^!\\[.*][(]https://latex[.]codecogs[.]com", all = FALSE)
})

test_that("github_document uses webtex as default for pandoc before 2.10.1", {
  skip_on_cran()
  skip_if_pandoc("2.10.1")
  skip_if_not_pandoc("2.0.4")
  skip_if_offline("latex.codecogs.com")
  tmp_file <- local_rmd_file(c(
    "**The Cauchy-Schwarz Inequality**",
    "$$\\sum_{k=1}^n$$",
    "",
    "This sentence uses `$` delimiters to show math inline:  $\\sqrt{3x-1}+(1+x)^2$"
  ))
  res <- .render_and_read(tmp_file, output_format = github_document(html_preview = FALSE, math_method = "default"))
  expect_match(res, "^!\\[.*][(]https://latex[.]codecogs[.]com", all = FALSE)
})
rstudio/rmarkdown documentation built on April 30, 2024, 2:57 p.m.