diff --git a/tests/testthat/helper.R b/tests/testthat/helper.R index b66210eb6..d504070e1 100644 --- a/tests/testthat/helper.R +++ b/tests/testthat/helper.R @@ -62,6 +62,16 @@ skip_if_not_utf8_locale <- function() { testthat::skip_if_not(l10n_info()[["UTF-8"]], "Not a UTF-8 locale") } +safe_load_help_db <- function() { + help_db <- tryCatch(tools::Rd_db("lintr"), error = function(e) NULL) + # e.g. in dev under pkgload::load_all() + if (length(help_db) == 0L) { + help_db <- tryCatch(tools::Rd_db(dir = testthat::test_path("..", "..")), error = function(e) NULL) + testthat::skip_if_not(length(help_db) > 0L, message = "Package help corrupted or not installed") + } + help_db +} + pipes <- function(exclude = NULL) { if (getRversion() < "4.1.0") exclude <- unique(c(exclude, "|>")) all_pipes <- c( diff --git a/tests/testthat/test-linter_tags.R b/tests/testthat/test-linter_tags.R index 92ee49f80..800831fef 100644 --- a/tests/testthat/test-linter_tags.R +++ b/tests/testthat/test-linter_tags.R @@ -103,12 +103,7 @@ test_that("rownames for available_linters data frame doesn't have missing entrie # See the roxygen helpers in R/linter_tags.R for the code used to generate the docs. # This test helps ensure the documentation is up to date with the available_linters() database test_that("lintr help files are up to date", { - help_db <- tools::Rd_db("lintr") - # e.g. in dev under pkgload::load_all() - if (length(help_db) == 0L) { - help_db <- tools::Rd_db(dir = test_path("..", "..")) - skip_if_not(length(help_db) > 0L, message = "Package help not installed or corrupted") - } + help_db <- safe_load_help_db() lintr_db <- available_linters(exclude_tags = NULL) lintr_db$package <- NULL diff --git a/tests/testthat/test-lintr-package.R b/tests/testthat/test-lintr-package.R index e7be3c484..80d668b69 100644 --- a/tests/testthat/test-lintr-package.R +++ b/tests/testthat/test-lintr-package.R @@ -1,5 +1,5 @@ test_that("All linter help files have examples", { - help_db <- tools::Rd_db("lintr") + help_db <- safe_load_help_db() linter_db <- help_db[endsWith(names(help_db), "_linter.Rd")] rd_has_examples <- function(rd) any(vapply(rd, attr, "Rd_tag", FUN.VALUE = character(1L)) == "\\examples") linter_has_examples <- vapply(linter_db, rd_has_examples, logical(1L))