output-expectations {testthat}R Documentation

Expectation: does code produce output/message/warning/error?

Description

Use expect_output(), expect_message(), expect_warning(), or expect_error() to check for specific outputs. Use expect_silent() to assert that there should be no output of any type. The file-basedexpect_output_file() compares the output to the contents of a text file and optionally updates it.

Usage

expect_output(object, regexp = NULL, ..., info = NULL, label = NULL)

expect_output_file(object, file, update = FALSE, ..., info = NULL,
  label = NULL)

expect_error(object, regexp = NULL, ..., info = NULL, label = NULL)

expect_message(object, regexp = NULL, ..., all = FALSE, info = NULL,
  label = NULL)

expect_warning(object, regexp = NULL, ..., all = FALSE, info = NULL,
  label = NULL)

expect_silent(object)

Arguments

object

object to test

regexp

regular expression to test against.

If NULL, the default, asserts that there should be an output, a messsage, a warning, or an error, but does not test for specific value.

If NA, asserts that there should be no output, messages, warnings, or errors.

...

Additional arguments passed on to grepl, e.g. ignore.case or fixed.

info

extra information to be included in the message (useful when writing tests in loops).

label

object label. When NULL, computed from deparsed object.

file

Path to a "golden" text file that contains the desired output.

update

Should the "golden" text file be updated? Default: FALSE.

all

For messages and warnings, do all need to the regexp (TRUE), or does only one need to match (FALSE)

See Also

Other expectations: comparison-expectations, equality-expectations, expect_equal_to_reference, expect_length, expect_match, expect_named, inheritance-expectations, logical-expectations

Examples

# Output --------------------------------------------------------------------
str(mtcars)
expect_output(str(mtcars), "32 obs")
expect_output(str(mtcars), "11 variables")

# You can use the arguments of grepl to control the matching
expect_output(str(mtcars), "11 VARIABLES", ignore.case = TRUE)
expect_output(str(mtcars), "$ mpg", fixed = TRUE)

# Messages ------------------------------------------------------------------

f <- function(x) {
  if (x < 0) message("*x* is already negative")
  -x
}
expect_message(f(-1))
expect_message(f(-1), "already negative")
expect_message(f(1), NA)

# You can use the arguments of grepl to control the matching
expect_message(f(-1), "*x*", fixed = TRUE)
expect_message(f(-1), "NEGATIVE", ignore.case = TRUE)

# Warnings --------------------------------------------------------------------
f <- function(x) {
  if (x < 0) warning("*x* is already negative")
  -x
}
expect_warning(f(-1))
expect_warning(f(-1), "already negative")
expect_warning(f(1), NA)

# You can use the arguments of grepl to control the matching
expect_warning(f(-1), "*x*", fixed = TRUE)
expect_warning(f(-1), "NEGATIVE", ignore.case = TRUE)

# Errors --------------------------------------------------------------------
f <- function() stop("My error!")
expect_error(f())
expect_error(f(), "My error!")

# You can use the arguments of grepl to control the matching
expect_error(f(), "my error!", ignore.case = TRUE)

# Silent --------------------------------------------------------------------
expect_silent("123")

f <- function() {
  message("Hi!")
  warning("Hey!!")
  print("OY!!!")
}
## Not run: 
expect_silent(f())

## End(Not run)

[Package testthat version 1.0.2 Index]