checkAndGetResults <- function(isError, isStopped) { stopifnot(shiny:::.globals$reterror == isError) stopifnot(shiny:::.globals$stopped, isStopped) shiny:::.globals$retval } test_that("stopApp records errors and respects visibility", { stopApp(10) expect_equal(withVisible(10), checkAndGetResults(FALSE, TRUE)) stopApp(invisible(cars)) expect_equal(withVisible(invisible(cars)), checkAndGetResults(FALSE, TRUE)) stopApp(stop("boom", call. = FALSE)) err <- checkAndGetResults(TRUE, TRUE) attr(err, "stack.trace") <- NULL expect_identical(simpleError("boom"), err) })