local_test_context {testthat} | R Documentation |
Locally set options for maximal test reproducibility
Description
local_test_context()
is run automatically by test_that()
but you may
want to run it yourself if you want to replicate test results interactively.
If run inside a function, the effects are automatically reversed when the
function exits; if running in the global environment, use
withr::deferred_run()
to undo.
local_reproducible_output()
is run automatically by test_that()
in the
3rd edition. You might want to call it to override the the default settings
inside a test, if you want to test Unicode, coloured output, or a
non-standard width.
Usage
local_test_context(.env = parent.frame())
local_reproducible_output(
width = 80,
crayon = FALSE,
unicode = FALSE,
rstudio = FALSE,
hyperlinks = FALSE,
lang = "en",
.env = parent.frame()
)
Arguments
.env |
Environment to use for scoping; expert use only. |
width |
Value of the |
crayon |
Determines whether or not crayon (now cli) colour should be applied. |
unicode |
Value of the |
rstudio |
Should we pretend that we're inside of RStudio? |
hyperlinks |
Should we use ANSI hyperlinks. |
lang |
Optionally, supply a BCP47 language code to set the language used for translating error messages. This is a lower case two letter ISO 639 country code, optionally followed by "_" or "-" and an upper case two letter ISO 3166 region code. |
Details
local_test_context()
sets TESTTHAT = "true"
, which ensures that
is_testing()
returns TRUE
and allows code to tell if it is run by
testthat.
In the third edition, local_test_context()
also calls
local_reproducible_output()
which temporary sets the following options:
-
cli.dynamic = FALSE
so that tests assume that they are not run in a dynamic console (i.e. one where you can move the cursor around). -
cli.unicode
(default:FALSE
) so that the cli package never generates unicode output (normally cli uses unicode on Linux/Mac but not Windows). Windows can't easily save unicode output to disk, so it must be set to false for consistency. -
cli.condition_width = Inf
so that new lines introduced while width-wrapping condition messages don't interfere with message matching. -
crayon.enabled
(default:FALSE
) suppresses ANSI colours generated by the cli and crayon packages (normally colours are used if cli detects that you're in a terminal that supports colour). -
cli.num_colors
(default:1L
) Same as the crayon option. -
lifecycle_verbosity = "warning"
so that every lifecycle problem always generates a warning (otherwise deprecated functions don't generate a warning every time). -
max.print = 99999
so the same number of values are printed. -
OutDec = "."
so numbers always uses.
as the decimal point (European users sometimes setOutDec = ","
). -
rlang_interactive = FALSE
so thatrlang::is_interactive()
returnsFALSE
, and code that uses it pretends you're in a non-interactive environment. -
useFancyQuotes = FALSE
so base R functions always use regular (straight) quotes (otherwise the default is locale dependent, seesQuote()
for details). -
width
(default: 80) to control the width of printed output (usually this varies with the size of your console).
And modifies the following env vars:
Unsets
RSTUDIO
, which ensures that RStudio is never detected as running.Sets
LANGUAGE = "en"
, which ensures that no message translation occurs.
Finally, it sets the collation locale to "C", which ensures that character sorting the same regardless of system locale.
Examples
local({
local_test_context()
cat(cli::col_blue("Text will not be colored"))
cat(cli::symbol$ellipsis)
cat("\n")
})
test_that("test ellipsis", {
local_reproducible_output(unicode = FALSE)
expect_equal(cli::symbol$ellipsis, "...")
local_reproducible_output(unicode = TRUE)
expect_equal(cli::symbol$ellipsis, "\u2026")
})