Nothing
local_mocked_bindings(
pandoc_convert_text = function(text, ...) {
# Skip actual pandoc conversion for speed
text
}
)
test_that("btw_tool_docs_package_news()", {
expect_equal(
ellmer::contents_text(btw(news(package = "dplyr"))),
ellmer::contents_text(btw("@news dplyr"))
)
expect_equal(
I(btw_tool_docs_package_news("dplyr")@value),
btw_this("@news dplyr")
)
expect_btw_tool_result(btw_tool_docs_package_news("dplyr"), has_data = FALSE)
})
test_that("btw_tool_docs_package_news() with search term", {
expect_equal(
I(btw_tool_docs_package_news("dplyr", "filter")@value),
btw_this("@news dplyr filter")
)
expect_btw_tool_result(
btw_tool_docs_package_news("dplyr", "filter"),
has_data = FALSE
)
})
test_that("btw_tool_docs_package_news() with non-existent package", {
expect_error(
btw_tool_docs_package_news("nonexistentpackage"),
"not installed"
)
})
test_that("btw_tool_docs_package_news() with R package", {
skip_if_not(nrow(news(package = "R")) > 0, "R news is not available")
.package_news <- package_news
.btw_this_news <- btw_this_news
.news_cache <- new.env(parent = emptyenv())
local_mocked_bindings(
package_news = function(package_name) {
# It takes a long time for utils::news() to compile the R news
expect_in(package_name, c("R", "R-3"))
cached <- get0(package_name, envir = .news_cache, ifnotfound = NULL)
if (!is.null(cached)) {
return(cached)
}
res <- .package_news(package_name)
.news_cache[[package_name]] <<- res
res
},
btw_this_news = function(args) {
expect_equal(args, "R")
.btw_this_news(args)
}
)
expect_equal(
ellmer::contents_text(btw(package_news(package_name = "R"))),
ellmer::contents_text(btw("@news R"))
)
expect_equal(
I(btw_tool_docs_package_news("R")@value),
btw_this("@news R")
)
expect_btw_tool_result(btw_tool_docs_package_news("R"), has_data = FALSE)
expect_btw_tool_result(
btw_tool_docs_package_news("R-3"),
has_data = FALSE
)
})
test_that("btw_tool_docs_package_news() when no news is found", {
local_mocked_bindings(
package_news = function(...) {
structure(
list(
Version = character(0),
Date = character(0),
Category = character(0),
Text = character(0),
HTML = character(0)
),
package = "R",
row.names = integer(0),
class = c("news_db_from_Rd", "news_db", "data.frame")
)
}
)
expect_message(
expect_s3_class(btw(package_news("R")), "btw::btw"),
"Nothing to include"
)
expect_message(
expect_equal(
ellmer::contents_text(btw(package_news("R"))),
""
),
"Nothing to include"
)
})
test_that("btw_tool_docs_package_news() with unmatched search term or version", {
if (package_version("dplyr") != "1.1.1") {
with_mocked_bindings(
package_news = function(package_name) {
news <- utils::news(package = package_name)
news <- news[news$Version == "1.1.1", ]
return(news)
},
code = {
expect_error(
btw_tool_docs_package_news("dplyr"),
"No NEWS entries"
)
expect_error(
btw("@news dplyr"),
"No NEWS entries"
)
}
)
}
expect_error(
btw_tool_docs_package_news("dplyr", "asdfsdfgdfghfghj"),
"No NEWS entries"
)
expect_error(
btw("@news dplyr asdfsdfgdfghfghj"),
"No NEWS entries"
)
})
test_that("btw_tool_docs_package_news() snapshots", {
skip_if_not_macos()
local_mocked_bindings(
package_version = function(package_name) {
if (package_name == "dplyr") {
return("1.1.4")
}
stop("Unknown package")
},
package_news = function(package_name) {
if (package_name == "dplyr") {
news <- utils::news(package = "dplyr")
news <- news[news$Version == "1.1.4", ]
return(news)
}
stop("Unknown package")
}
)
expect_snapshot(print(btw("@news dplyr")))
expect_snapshot(print(btw("@news dplyr join")))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.