# Define inline helper function to allow for short, clear tests
contains <- function(hints, pattern) any(grepl(pattern, hints$fixme))
expect_missing_error <- function(x) expect_error(x, "missing")
testthat::test_that("Silent if ok URLs", {
skip_on_cran()
skip_if_offline()
example_file("DESCRIPTION_good") %>%
give_opinions_desc() %>%
expect_null()
})
testthat::test_that("Message if no URL", {
skip_on_cran()
skip_if_offline()
hints <- example_file("DESCRIPTION_no_URL") %>%
give_opinions_desc()
expect_s3_class(hints, "data.frame")
expect_equal(hints$where, "DESCRIPTION")
expect_true(contains(hints, "URL"))
})
testthat::test_that("Message if no BugReports", {
hints <- example_file("DESCRIPTION_no_bugreports") %>%
give_opinions_desc()
expect_s3_class(hints, "data.frame")
expect_equal(hints$where[1], "DESCRIPTION")
expect_true(contains(hints, "BugReports"))
})
testthat::test_that("No message if ok description",{
skip_on_cran()
skip_if_offline()
example_file("DESCRIPTION_Rforge") %>%
give_opinions_desc() %>%
expect_null()
})
test_that("Message if bad URLS", {
skip_on_cran()
skip_if_offline()
hints <- example_file("DESCRIPTION_wrongURLS") %>%
give_opinions_desc()
expect_true(contains(hints, "Problematic URLs"))
})
test_that("badges in README", {
skip_on_cran()
skip_if_offline()
file <- example_file("README_codemetar_bad.md")
hints <- give_opinions_readme(file, "codemetar")
## failing since we aren't on CRAN
#expect_equal(nrow(hints), 2)
expect_true(contains(hints, "status"))
#expect_true(contains(hints, "CRAN"))
hints <- give_opinions_readme(file, "a4")
expect_true(contains(hints, "BioConductor"))
})
test_that("read_description_if_null() works", {
file <- example_file("DESCRIPTION_good")
description <- desc::desc(file)
result_1 <- read_description_if_null(description, "does_not_matter")
result_2 <- read_description_if_null(NULL, file)
expect_missing_error(read_description_if_null())
expect_identical(description, result_1)
expect_equal(description, result_2) # why not identical?
})
test_that("add_url_fixmes() works", {
skip_on_cran()
skip_if_offline()
expect_missing_error(add_url_fixmes())
result_1 <- add_url_fixmes("fixme", "no-such-url")
result_2 <- add_url_fixmes("fixme", "www.leo.org")
result_3 <- add_url_fixmes("fixmes", NA, "hint_add_repo_url")
expect_identical(result_1[1], "fixme")
expect_match(result_1[2], "No connection was possible")
expect_identical(result_2, "fixme")
expect_error(add_url_fixmes("fixmes", NA, "invalid_id"), "No such message_id")
expect_match(result_3[2], "Indicate the URL")
})
test_that("fixmes_as_df_or_message() works", {
expect_missing_error(fixmes_as_df_or_message())
expect_missing_error(fixmes_as_df_or_message("fix!"))
result <- fixmes_as_df_or_message("fix!", "my-package")
expect_s3_class(result, "data.frame")
expect_identical(dim(result), c(1L, 2L))
expect_identical(names(result), c("where", "fixme"))
expect_identical(result$where, "my-package")
expect_identical(result$fixme, "fix!")
})
test_that("try_to_give_opinions_readme() works", {
expect_missing_error(try_to_give_opinions_readme())
expect_null(try_to_give_opinions_readme(example_file("DESCRIPTION_good")))
expect_null(try_to_give_opinions_readme(package_file("dplyr", "DESCRIPTION")))
})
test_that("has_provider_but_no_badge() works", {
expect_missing_error(has_provider_but_no_badge())
expect_false(has_provider_but_no_badge(NULL))
expect_true(has_provider_but_no_badge(list(name = "my-provider")))
expect_missing_error(has_provider_but_no_badge(list(name = "BioConductor")))
file <- example_file("README_ex2.md")
expect_true(has_provider_but_no_badge(list(name = "BioConductor"), file))
file <- example_file("README_codemetar_good.md")
provider <- list(name = "Comprehensive R Archive Network (CRAN)")
expect_false(has_provider_but_no_badge(provider, file))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.