testthat::skip_on_cran() testthat::skip_on_ci() test_fun_normal <- function(x = "default") { Sys.sleep(1) return(x) } test_fun_warning <- function(x = "default") { warning("warning") Sys.sleep(1) return(x) } test_fun_error <- function(x = "default") { warning("warning") Sys.sleep(1) stop("error") return(x) } testthat::test_that("Processes that complete within the timeout function correctly", { results_normal <- familiar:::do.call_with_timeout( test_fun_normal, list("x" = "done"), timeout = 10000) testthat::expect_equal(results_normal$value, "done") testthat::expect_equal(results_normal$timeout, FALSE) results_warning <- familiar:::do.call_with_timeout( test_fun_warning, list("x" = "done"), timeout = 10000) testthat::expect_equal(results_warning$value, "done") testthat::expect_equal(results_warning$timeout, FALSE) testthat::expect_error( familiar:::do.call_with_timeout( test_fun_error, list("x" = "done"), timeout = 10000), "error") }) testthat::test_that("Processes that complete outside the timeout fail", { results_normal <- familiar:::do.call_with_timeout( test_fun_normal, list("x" = "done"), timeout = 500) testthat::expect_equal(is.null(results_normal$value), TRUE) testthat::expect_equal(results_normal$timeout, TRUE) results_warning <- familiar:::do.call_with_timeout( test_fun_warning, list("x" = "done"), timeout = 500) testthat::expect_equal(is.null(results_warning$value), TRUE) testthat::expect_equal(results_warning$timeout, TRUE) results_error <- familiar:::do.call_with_timeout( test_fun_error, list("x" = "done"), timeout = 500) testthat::expect_equal(is.null(results_error$value), TRUE) testthat::expect_equal(results_error$timeout, TRUE) }) testthat::test_that("Processes that are called with handles function correctly", { results_normal <- familiar:::do.call_with_handlers( test_fun_normal, list("x" = "done")) testthat::expect_equal(results_normal$value, "done") testthat::expect_equal(is.null(results_normal$warning), TRUE) testthat::expect_equal(is.null(results_normal$error), TRUE) results_warning <- familiar:::do.call_with_handlers( test_fun_warning, list("x" = "done")) testthat::expect_equal(results_warning$value, "done") testthat::expect_equal(results_warning$warning, "warning") testthat::expect_equal(is.null(results_warning$error), TRUE) results_error <- familiar:::do.call_with_handlers( test_fun_error, list("x" = "done")) testthat::expect_equal(is.null(results_error$value), TRUE) testthat::expect_equal(results_error$warning, "warning") testthat::expect_equal(results_error$error, "error") }) testthat::test_that("Processes that are called with handles and timeout function correctly", { results_normal <- familiar:::do.call_with_handlers_timeout( test_fun_normal, list("x" = "done"), timeout = 10000) testthat::expect_equal(results_normal$value, "done") testthat::expect_equal(is.null(results_normal$warning), TRUE) testthat::expect_equal(is.null(results_normal$error), TRUE) testthat::expect_equal(results_normal$timeout, FALSE) results_warning <- familiar:::do.call_with_handlers_timeout( test_fun_warning, list("x" = "done"), timeout = 10000) testthat::expect_equal(results_warning$value, "done") testthat::expect_equal(results_warning$warning, "warning") testthat::expect_equal(is.null(results_warning$error), TRUE) testthat::expect_equal(results_warning$timeout, FALSE) results_error <- familiar:::do.call_with_handlers_timeout( test_fun_error, list("x" = "done"), timeout = 10000) testthat::expect_equal(is.null(results_error$value), TRUE) testthat::expect_equal(results_error$warning, "warning") testthat::expect_equal(results_error$error, "error") testthat::expect_equal(results_error$timeout, FALSE) }) testthat::test_that("Processes that are called with handles and infinite timeout function correctly", { results_normal <- familiar:::do.call_with_handlers_timeout( test_fun_normal, list("x" = "done"), timeout = Inf) testthat::expect_equal(results_normal$value, "done") testthat::expect_equal(is.null(results_normal$warning), TRUE) testthat::expect_equal(is.null(results_normal$error), TRUE) testthat::expect_equal(results_normal$timeout, FALSE) results_warning <- familiar:::do.call_with_handlers_timeout( test_fun_warning, list("x" = "done"), timeout = Inf) testthat::expect_equal(results_warning$value, "done") testthat::expect_equal(results_warning$warning, "warning") testthat::expect_equal(is.null(results_warning$error), TRUE) testthat::expect_equal(results_warning$timeout, FALSE) results_error <- familiar:::do.call_with_handlers_timeout( test_fun_error, list("x" = "done"), timeout = Inf) testthat::expect_equal(is.null(results_error$value), TRUE) testthat::expect_equal(results_error$warning, "warning") testthat::expect_equal(results_error$error, "error") testthat::expect_equal(results_error$timeout, FALSE) }) testthat::test_that("Processes that complete outside timeout fail", { results_normal <- familiar:::do.call_with_handlers_timeout( test_fun_normal, list("x" = "done"), timeout = 500) testthat::expect_equal(is.null(results_normal$value), TRUE) testthat::expect_equal(is.null(results_normal$warning), TRUE) testthat::expect_equal(is.null(results_normal$error), TRUE) testthat::expect_equal(results_normal$timeout, TRUE) results_warning <- familiar:::do.call_with_handlers_timeout( test_fun_warning, list("x" = "done"), timeout = 500) testthat::expect_equal(is.null(results_warning$value), TRUE) testthat::expect_equal(is.null(results_warning$warning), TRUE) testthat::expect_equal(is.null(results_warning$error), TRUE) testthat::expect_equal(results_warning$timeout, TRUE) results_error <- familiar:::do.call_with_handlers_timeout( test_fun_error, list("x" = "done"), timeout = 500) testthat::expect_equal(is.null(results_error$value), TRUE) testthat::expect_equal(is.null(results_error$warning), TRUE) testthat::expect_equal(is.null(results_error$error), TRUE) testthat::expect_equal(results_error$timeout, TRUE) })