1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
start_app(.auto_close = TRUE)
test_that_cli("add/remove/list themes", {
withr::local_rng_version("3.3.0")
set.seed(24)
start_app(.auto_close = TRUE)
id <- default_app()$add_theme(list(".green" = list(color = "green")))
expect_true(id %in% names(default_app()$list_themes()))
expect_snapshot({
cli_par(class = "green")
cli_text(lorem_ipsum())
cli_end()
})
default_app()$remove_theme(id)
expect_false(id %in% names(default_app()$list_themes()))
})
test_that("default theme is valid", {
expect_error({
id <- default_app()$add_theme(builtin_theme())
default_app()$remove_theme(id)
}, NA)
})
test_that("explicit formatter is used, and combined", {
id <- default_app()$add_theme(list(
"span.emph" = list(
fmt = function(x) paste0("(((", x, ")))"),
before = "<<", after = ">>")
))
on.exit(default_app()$remove_theme(id), add = TRUE)
expect_snapshot(
cli_text("this is {.emph it}, really")
)
})
test_that("simple theme", {
def <- simple_theme()
expect_true(is.list(def))
expect_false(is.null(names(def)))
expect_true(all(names(def) != ""))
expect_true(all(vlapply(def, is.list)))
})
test_that("user's override", {
custom <- list(".alert" = list(before = "custom:"))
override <- list(".alert" = list(after = "override:"))
expect_snapshot(local({
start_app(theme = custom, .auto_close = FALSE)
cli_alert("Alert!")
stop_app()
withr::local_options(cli.user_theme = override)
start_app(theme = custom, .auto_close = FALSE)
cli_alert("Alert!")
stop_app()
}))
})
test_that("theme does not precompute Unicode symbols", {
withr::local_options(cli.unicode = TRUE, cli.num_colors = 256L)
start_app()
msg <- NULL
withCallingHandlers(
cli_alert_success("ok"),
cliMessage = function(m) {
msg <<- m
invokeRestart("muffleMessage")
}
)
expect_true(ansi_has_any(msg$message))
msg2 <- NULL
withr::local_options(cli.unicode = FALSE, cli.num_colors = 1L)
withCallingHandlers(
cli_alert_success("ok2"),
cliMessage = function(m) {
msg2 <<- m
invokeRestart("muffleMessage")
}
)
expect_equal(msg2$message, "v ok2\n")
})
test_that("NULL will undo a style property", {
expect_snapshot(local({
cli_alert("this has an arrow")
cli_div(theme = list(.alert = list(before = NULL)))
cli_alert("this does not")
}))
})
test_that_cli(configs = "ansi", "NULL will undo color", {
expect_snapshot(local({
cli_alert("{.emph {.val this is blue}}")
cli_div(theme = list(span.val = list(color = NULL)))
cli_alert("{.emph {.val this is not}}")
}))
expect_snapshot(local({
cli_alert("{.emph {.val this is blue}}")
cli_div(theme = list(span.val = list(color = "none")))
cli_alert("{.emph {.val this is not}}")
}))
})
withr::local_options(cli.theme = NULL, cli.user_theme = NULL)
withr::local_options(cli.theme_dark = FALSE, cli.num_colors = 256)
start_app()
on.exit(stop_app(), add = TRUE)
test_that_cli(configs = "ansi", "NULL will undo background color", {
skip_if_not_installed("testthat", "3.1.2")
expect_snapshot(local({
cli_alert("{.emph {.code this has bg color}}")
cli_div(theme = list(span = list("background-color" = NULL)))
cli_alert("{.emph {.code this does not}}")
}))
expect_snapshot(local({
cli_alert("{.emph {.code this has bg color}}")
cli_div(theme = list(span = list("background-color" = "none")))
cli_alert("{.emph {.code this does not}}")
}))
})
|