test_that("parse failures include file name", { skip_if_not(getRversion() >= "4.0.0") pkg <- local_pkgdown_site(test_path("assets/reference-fail")) expect_snapshot(build_reference(pkg), error = TRUE) }) test_that("examples_env runs pre and post code", { dst_path <- withr::local_tempdir() dir_create(path(dst_path, "reference")) pkg <- list( package = "test", src_path = test_path("assets/reference-pre-post"), dst_path = dst_path ) env <- local(examples_env(pkg)) expect_equal(env$a, 2) }) test_that("examples_env sets width", { pkg <- local_pkgdown_site( test_path("assets/reference"), list(code = list(width = 50)) ) dir_create(path(pkg$dst_path, "reference")) examples_env(pkg) expect_equal(getOption("width"), 50) }) test_that("test usage ok on rendered page", { pkg <- local_pkgdown_site( test_path("assets/reference"), list(template = list(bootstrap = 3)) ) suppressMessages(init_site(pkg)) suppressMessages(build_reference(pkg, topics = "c")) html <- xml2::read_html(path(pkg$dst_path, "reference", "c.html")) expect_equal(xpath_text(html, "//div[@id='ref-usage']", trim = TRUE), "c()") clean_site(pkg, quiet = TRUE) pkg <- local_pkgdown_site(test_path("assets/reference")) suppressMessages(init_site(pkg)) suppressMessages(build_reference(pkg, topics = "c")) html <- xml2::read_html(path(pkg$dst_path, "reference", "c.html")) # tweak_anchors() moves id into

expect_equal(xpath_text(html, "//div[h2[@id='ref-usage']]/div", trim = TRUE), "c()") }) test_that(".Rd without usage doesn't get Usage section", { pkg <- local_pkgdown_site( test_path("assets/reference"), list(template = list(bootstrap = 3)) ) suppressMessages(init_site(pkg)) suppressMessages(build_reference(pkg, topics = "e")) html <- xml2::read_html(path(pkg$dst_path, "reference", "e.html")) expect_equal(xpath_length(html, "//div[@id='ref-usage']"), 0) clean_site(pkg, quiet = TRUE) pkg <- local_pkgdown_site(test_path("assets/reference")) suppressMessages(init_site(pkg)) suppressMessages(build_reference(pkg, topics = "e")) html <- xml2::read_html(path(pkg$dst_path, "reference", "e.html")) # tweak_anchors() moves id into

expect_equal(xpath_length(html, "//div[h2[@id='ref-usage']]"), 0) }) test_that("pkgdown html dependencies are suppressed from examples in references", { pkg <- local_pkgdown_site(test_path("assets/reference-html-dep")) suppressMessages(init_site(pkg)) suppressMessages(build_reference(pkg, topics = "a")) html <- xml2::read_html(path(pkg$dst_path, "reference", "a.html")) # jquery is only loaded once, even though it's included by an example expect_equal(xpath_length(html, ".//script[(@src and contains(@src, '/jquery'))]"), 1) # same for bootstrap js and css str_subset_bootstrap <- function(x) { bs_rgx <- "bootstrap-[\\d.]+" # ex: bootstrap-5.1.0 not bootstrap-toc, grep(bs_rgx, x, value = TRUE, perl = TRUE) } bs_js_src <- str_subset_bootstrap( xpath_attr(html, ".//script[(@src and contains(@src, '/bootstrap'))]", "src") ) expect_length(bs_js_src, 1) bs_css_href <- str_subset_bootstrap( xpath_attr(html, ".//link[(@href and contains(@href, '/bootstrap'))]", "href") ) expect_length(bs_css_href, 1) }) test_that("examples are reproducible by default, i.e. 'seed' is respected", { pkg <- local_pkgdown_site(test_path("assets/reference")) suppressMessages(init_site(pkg)) suppressMessages(build_reference(pkg, topics = "f")) html <- xml2::read_html(path(pkg$dst_path, "reference", "f.html")) examples <- xpath_text(html, ".//code//*[contains(@class, 'r-out')]") expect_snapshot(cat(examples)) }) test_that("arguments get individual ids", { pkg <- local_pkgdown_site(test_path("assets/reference")) suppressMessages(init_site(pkg)) suppressMessages(build_reference(pkg, topics = "a")) html <- xml2::read_html(path(pkg$dst_path, "reference", "a.html")) expect_equal(xpath_attr(html, "//dt", "id"), c("arg-a", "arg-b", "arg-c")) }) test_that("title and page title escapes html", { pkg <- local_pkgdown_site(test_path("assets/reference")) suppressMessages(init_site(pkg)) suppressMessages(build_reference(pkg, topics = "g")) html <- xml2::read_html(path(pkg$dst_path, "reference", "g.html")) expect_equal(xpath_text(html, "//title", trim = TRUE), "g <-> h — g • testpackage") expect_equal(xpath_text(html, "//h1", trim = TRUE), "g <-> h") }) test_that("get_rdname handles edge cases", { expect_equal(get_rdname(list(file_in = "foo..Rd")), "foo.") expect_equal(get_rdname(list(file_in = "foo.rd")), "foo") })