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

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-based`expect_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]