test_that("gargle_verbosity() defaults to 'info'", {
withr::local_options(list(
gargle_verbosity = NULL,
gargle_quiet = NULL
))
expect_equal(gargle_verbosity(), "info")
})
test_that("gargle_verbosity() validates the value it finds", {
withr::local_options(list(gargle_verbosity = TRUE))
expect_snapshot_error(gargle_verbosity())
})
test_that("gargle_verbosity() accomodates people using the old option", {
withr::local_options(list(
gargle_verbosity = NULL,
gargle_quiet = FALSE
))
expect_snapshot(
out <- gargle_verbosity()
)
expect_equal(out, "debug")
})
test_that("gargle_info() works", {
blah <- "BLAH"
local_gargle_verbosity("debug")
expect_snapshot(gargle_info(c("aa {.field {blah}} bb", "cc {.emph xyz} dd")))
local_gargle_verbosity("info")
expect_snapshot(gargle_info(c("ee {.field {blah}} ff", "gg {.emph xyz} hh")))
local_gargle_verbosity("silent")
expect_snapshot(gargle_info(c("ii {.field {blah}} jj", "kk {.emph xyz} ll")))
})
test_that("gargle_debug() works", {
foo <- "FOO"
local_gargle_verbosity("debug")
expect_snapshot(gargle_debug(c("11 {.field {foo}} 22", "33 {.file a/b/c} 44")))
local_gargle_verbosity("info")
expect_snapshot(gargle_debug(c("55 {.field {foo}} 66", "77 {.file a/b/c} 88")))
local_gargle_verbosity("silent")
expect_snapshot(gargle_debug(c("99 {.field {foo}} 00", "11 {.file a/b/c} 22")))
})
test_that("bulletize() works", {
expect_snapshot(cli::cli_bullets(bulletize(letters)))
expect_snapshot(cli::cli_bullets(bulletize(letters, bullet = "x")))
expect_snapshot(cli::cli_bullets(bulletize(letters, n_show = 2)))
expect_snapshot(cli::cli_bullets(bulletize(letters[1:6])))
expect_snapshot(cli::cli_bullets(bulletize(letters[1:7])))
expect_snapshot(cli::cli_bullets(bulletize(letters[1:8])))
expect_snapshot(cli::cli_bullets(bulletize(letters[1:6], n_fudge = 0)))
expect_snapshot(cli::cli_bullets(bulletize(letters[1:8], n_fudge = 3)))
})
# menu(), but based on readline() + cli and mockable ---------------------------
test_that("cli_menu() basic usage", {
cli_menu_with_mock <- function(x) {
local_user_input(x)
cli_menu(
"Found multiple thingies.",
"Which one do you want to use?",
glue("label {head(letters, 3)}")
)
}
expect_snapshot(cli_menu_with_mock(1))
})
test_that("cli_menu() does not infinite loop with invalid mocked input", {
cli_menu_with_mock <- function(x) {
local_user_input(x)
cli_menu(
"Found multiple thingies.",
"Which one do you want to use?",
glue("label {head(letters, 3)}")
)
}
expect_snapshot(cli_menu_with_mock("nope"), error = TRUE)
})
test_that("cli_menu() can work through multiple valid mocked inputs", {
cli_menu_with_mock <- function(x) {
local_user_input(x)
header <- "Found multiple thingies."
prompt <- "Which one do you want to use?"
choices <- glue("label {1:3}")
first <- cli_menu(header, prompt, choices)
second <- cli_menu(header, prompt, choices)
c(first, second)
}
expect_snapshot(
out <- cli_menu_with_mock(c(1, 3))
)
expect_equal(out, c(1, 3))
})
test_that("cli_menu(), request exit via 0", {
cli_menu_with_mock <- function(x) {
local_user_input(x)
cli_menu(
"Found multiple thingies.",
"Which one do you want to use?",
glue("label {head(letters, 3)}")
)
}
expect_snapshot(error = TRUE, cli_menu_with_mock(0))
})
test_that("cli_menu(exit =) works", {
cli_menu_with_mock <- function(x) {
local_user_input(x)
cli_menu(
header = "Hey we need to talk.",
prompt = "What do you want to do?",
choices = c(
"Give up",
"Some other thing"
),
exit = 1
)
}
expect_snapshot(error = TRUE, cli_menu_with_mock(1))
expect_snapshot(cli_menu_with_mock(2))
})
test_that("cli_menu() inline markup and environment passing", {
cli_menu_with_mock <- function(x) {
local_user_input(x)
verb <- "talk"
action <- "do"
pkg_name <- "nifty"
cli_menu(
header = "Hey we need to {.str {verb}}.",
prompt = "What do you want to {.str {action}}?",
choices = c(
"Send email to {.email jane@example.com}",
"Install the {.pkg {pkg_name}} package"
)
)
}
expect_snapshot(cli_menu_with_mock(1))
})
test_that("cli_menu() not_interactive, many strings, chained error", {
wrapper_fun <- function() {
local_interactive(FALSE)
things <- glue("thing {1:3}")
cli_menu(
header = "Multiple things found.",
prompt = "Which one do you want to use?",
choices = things,
not_interactive = c(i = "Use {.arg thingy} to specify one of {.str {things}}.")
)
}
expect_snapshot(wrapper_fun(), error = TRUE)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.