test_that("deprecate_soft() warns when called from global env", {
reset_warning_verbosity("rlang_test1")
reset_warning_verbosity("rlang_test2")
reset_warning_verbosity("rlang_test3")
reset_warning_verbosity("rlang_test4")
# Disable testthat handling
withr::local_envvar(c("TESTTHAT_PKG" = ""))
depr_soft <- function(id) deprecate_soft("foo", id)
depr <- function(id) deprecate_warn("foo", id)
# Indirect usage
local_env <- env(
ns_env("rlang"),
depr_soft = depr_soft,
depr = depr
)
local(envir = local_env, {
expect_no_warning(depr_soft("rlang_test1"))
expect_warning(depr("rlang_test2"), "foo")
# Does not warn again
expect_no_warning(depr("rlang_test2"))
})
# Direct usage
local_bindings(
.env = global_env(),
depr_soft = depr_soft,
depr = depr
)
local(envir = global_env(), {
expect_warning(depr_soft("rlang_test3"), "foo")
expect_warning(depr("rlang_test4"), "foo")
# Warns again
expect_warning(depr_soft("rlang_test3"), "foo")
expect_warning(depr("rlang_test4"), "foo")
})
})
test_that("deprecate_soft() warns when called from package being tested", {
reset_warning_verbosity("rlang_test")
withr::local_envvar(c("TESTTHAT_PKG" = "rlang"))
depr <- function() deprecate_soft("warns from package being tested", id = "rlang_test")
expect_warning(depr(), "warns from")
expect_warning(depr(), "warns from")
})
test_that("deprecate_soft() indirect behaviour when warning verbosity is set", {
reset_warning_verbosity("rlang_test")
local_options(lifecycle_verbosity = "warning")
local_env <- env(
ns_env("base"),
depr = inject(function(id) (!!deprecate_soft)("foo", id))
)
# FIXME: Is this a bug in lifecycle?
local(envir = local_env, {
expect_no_warning(depr("rlang_test"))
expect_no_warning(depr("rlang_test"))
})
})
test_that("can disable lifecycle warnings", {
local_lifecycle_silence()
expect_no_warning(deprecate_soft("foo"))
expect_no_warning(deprecate_warn("foo"))
})
test_that("can promote lifecycle warnings to errors", {
local_lifecycle_errors()
expect_defunct(deprecate_soft("foo"), "foo")
expect_defunct(deprecate_warn("foo"), "foo")
})
test_that("can enable warnings and errors with `with_` helpers", {
expect_defunct(with_lifecycle_errors(deprecate_soft("foo")), "foo")
expect_no_warning(with_lifecycle_warnings(with_lifecycle_silence(deprecate_warn("foo"))))
# FIXME: Is this a bug in lifecycle?
expect_no_warning(with_lifecycle_warnings(deprecate_soft("foo")))
})
test_that("soft-deprecation warnings are issued when called from child of global env as well", {
fn <- function() deprecate_soft("called from child of global env")
expect_warning(eval_bare(call2(fn), env(global_env())), "child of global env")
})
test_that("once-per-session note is not displayed on repeated warnings", {
reset_warning_verbosity("once-per-session-note")
wrn <- catch_cnd(
deprecate_warn("foo", "once-per-session-note"),
"lifecycle_warning_deprecated"
)
expect_true(grepl("once every", conditionMessage(wrn)))
})
test_that("lifecycle signallers support character vectors", {
local_lifecycle_errors()
expect_defunct(deprecate_soft(c("foo", "bar")), "foo\nbar")
expect_defunct(deprecate_warn(c("foo", "bar")), "foo\nbar")
expect_defunct(deprecate_stop(c("foo", "bar")), "foo\nbar")
})
test_that("the topenv of the empty env is not the global env", {
expect_silent(deprecate_soft("topenv empty env", user_env = empty_env()))
})
test_that("can supply bullets", {
expect_snapshot({
deprecate_warn(c("foo", "i" = "bar"))
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.