test_that("parse failures include file name", { skip_if_not(getRversion() >= "4.0.0") local_edition(3) 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"), " code: width: 50 ") dir.create(file.path(pkg$dst_path, "reference"), recursive = TRUE) examples_env(pkg) expect_equal(getOption("width"), 50) }) test_that("test usage ok on rendered page", { local_edition(3) pkg <- local_pkgdown_site(test_path("assets/reference")) suppressMessages(expect_message(build_reference(pkg, topics = "c"))) html <- xml2::read_html(file.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"), " template: bootstrap: 5 ") suppressMessages(expect_message(init_site(pkg))) suppressMessages(expect_message(build_reference(pkg, topics = "c"))) html <- xml2::read_html(file.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", { local_edition(3) pkg <- local_pkgdown_site(test_path("assets/reference")) expect_snapshot(build_reference(pkg, topics = "e")) html <- xml2::read_html(file.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"), " template: bootstrap: 5 ") suppressMessages(expect_message(init_site(pkg))) expect_snapshot(build_reference(pkg, topics = "e")) html <- xml2::read_html(file.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(expect_message(init_site(pkg))) expect_snapshot(build_reference(pkg, topics = "a")) html <- xml2::read_html(file.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(build_reference(pkg, topics = "f")) examples <- xml2::read_html(file.path(pkg$dst_path, "reference", "f.html")) %>% rvest::html_node("div#ref-examples div.sourceCode") %>% rvest::html_text() %>% # replace line feeds with whitespace to make output platform independent gsub("\r", "", .) expect_snapshot(cat(examples)) }) 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") })