test_that("messages about reading and writing", {
pkg <- local_pkgdown_site()
expect_snapshot({
build_home_index(pkg)
build_home_index(pkg)
})
})
test_that("title and description come from DESCRIPTION by default", {
pkg <- local_pkgdown_site(desc = list(
Title = "A test title",
Description = "A test description."
))
expect_equal(data_home(pkg)$pagetitle, "A test title")
expect_equal(data_home(pkg)$opengraph$description, "A test description.")
# but overridden by home
pkg$meta <- list(home = list(title = "X", description = "Y"))
expect_equal(data_home(pkg)$pagetitle, "X")
expect_equal(data_home(pkg)$opengraph$description, "Y")
})
test_that("math is handled", {
pkg <- local_pkgdown_site()
pkg <- pkg_add_file(pkg, "README.md", "$1 + 1$")
suppressMessages(build_home_index(pkg))
html <- xml2::read_html(path(pkg$dst_path, "index.html"))
expect_equal(xpath_length(html, ".//math"), 1)
})
test_that("data_home() validates yaml metadata", {
data_home_ <- function(...) {
pkg <- local_pkgdown_site(meta = list(...))
data_home(pkg)
}
expect_snapshot(error = TRUE, {
data_home_(home = 1)
data_home_(home = list(title = 1))
data_home_(home = list(description = 1))
data_home_(template = list(trailing_slash_redirect = 1))
})
})
test_that("version formatting in preserved", {
pkg <- local_pkgdown_site(desc = list(Version = "1.0.0-9000"))
expect_equal(pkg$version, "1.0.0-9000")
suppressMessages(build_home_index(pkg))
index <- read_lines(path(pkg$dst_path, "index.html"))
expect_match(index, "1.0.0-9000", fixed = TRUE, all = FALSE)
})
test_that("data_home_sidebar() works by default", {
pkg <- local_pkgdown_site()
expect_snapshot(cat(data_home_sidebar(pkg)))
# comments are not included
pkg <- local_pkgdown_site(desc = list(
`Authors@R` = 'c(
person("Hadley", "Wickham", , "hadley@rstudio.com", role = c("aut", "cre")),
person("RStudio", role = c("cph", "fnd"), comment = c("Thank you!"))
)'
))
html <- xml2::read_html(data_home_sidebar(pkg))
expect_snapshot_output(xpath_xml(html, ".//div[@class='developers']"))
})
test_that("data_home_sidebar() can be removed", {
pkg <- local_pkgdown_site(meta = list(home = list(sidebar = FALSE)))
# not built by data_home_sidebar()
expect_false(data_home_sidebar(pkg))
# nor later -- so probably not to be tested here?!
suppressMessages(build_home_index(pkg))
html <- xml2::read_html(path(pkg$dst_path, "index.html"))
expect_equal(xpath_length(html, ".//aside/*"), 0)
})
test_that("data_home_sidebar() can be defined by a HTML file", {
pkg <- local_pkgdown_site(
meta = list(home = list(sidebar = list(html = "sidebar.html")))
)
expect_snapshot(data_home_sidebar(pkg), error = TRUE)
pkg <- pkg_add_file(pkg, "sidebar.html", "Hello, world!")
expect_equal(data_home_sidebar(pkg), "Hello, world!\n")
})
test_that("data_home_sidebar() can get a custom markdown formatted component", {
pkg <- local_pkgdown_site(meta = list(
home = list(
sidebar = list(
structure = "fancy",
components = list(
fancy = list(
title = "Fancy section",
text = "How *cool* is pkgdown?!"
)
)
)
)
))
html <- xml2::read_html(data_home_sidebar(pkg))
expect_snapshot_output(xpath_xml(html, ".//div[@class='fancy-section']"))
})
test_that("data_home_sidebar() can add a TOC", {
pkg <- local_pkgdown_site(meta = list(
home = list(sidebar = list(structure = "toc"))
))
html <- xml2::read_html(data_home_sidebar(pkg))
expect_snapshot_output(xpath_xml(html, ".//div[@class='table-of-contents']"))
})
test_that("data_home_sidebar() outputs informative error messages", {
data_home_sidebar_ <- function(...) {
pkg <- local_pkgdown_site(meta = list(home = list(sidebar = list(...))))
data_home_sidebar(pkg)
}
expect_snapshot(error = TRUE, {
data_home_sidebar_(html = 1)
data_home_sidebar_(structure = 1)
data_home_sidebar_(structure = "fancy")
data_home_sidebar_(structure = c("fancy", "cool"))
data_home_sidebar_(structure = "fancy", components = list(fancy = list(text = "bla")))
data_home_sidebar_(structure = "fancy", components = list(fancy = list()))
})
})
test_that("package repo verification", {
skip_on_cran() # requires internet connection
expect_null(cran_link("notarealpkg"))
expect_equal(
cran_link("dplyr"),
list(repo = "CRAN", url = "https://cloud.r-project.org/package=dplyr")
)
expect_equal(
cran_link("Biobase"),
list(repo = "Bioconductor", url = "https://www.bioconductor.org/packages/Biobase")
)
})
test_that("cran_unquote works", {
expect_equal(
cran_unquote("'Quoting' is CRAN's thing."),
"Quoting is CRAN's thing."
)
})
test_that("allow email in BugReports", {
# currently desc throws a warning if BugReports is an email
pkg <- local_pkgdown_site(desc = list(BugReports = "me@tidyverse.com"))
html <- xml2::read_html(data_home_sidebar(pkg))
expect_snapshot(xpath_xml(html, ".//li/a"))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.