context("error handling")
test_that("catching execution errors", {
# Test that 'ping' is on the path
skip_if_not(as.logical(nchar(Sys.which('ping'))), "ping utility is not available")
# Ping has different args for each platform
sysname <- tolower(Sys.info()[["sysname"]])
args <- switch(sysname,
windows = c("-n", "2", "localhost"),
darwin = c("-t2", "localhost"),
sunos = c("-s", "localhost", "64", "2"),
c("-c2", "localhost") #linux/default
)
# Run ping
expect_equal(exec_wait("ping", args, std_out = FALSE), 0)
# Error for non existing program (win-builder gives a german error)
expect_error(exec_wait("doesnotexist"), "Failed to execute.*(file|Datei)")
expect_error(exec_background("doesnotexist"), "Failed to execute.*(file|Datei)")
# Same without stdout
expect_error(exec_wait("doesnotexist", std_out = FALSE, std_err = FALSE), "Failed to execute")
expect_error(exec_background("doesnotexist", std_out = FALSE, std_err = FALSE), "Failed to execute")
# Program error
expect_is(exec_wait("ping", "999.999.999.999.999", std_err = FALSE, std_out = FALSE), "integer")
expect_is(exec_background("ping", "999.999.999.999.999", std_err = FALSE, std_out = FALSE), "integer")
# Program error with exec_internal
expect_error(exec_internal('ping', "999.999.999.999.999"))
out <- exec_internal('ping', "999.999.999.999.999", error = FALSE)
expect_gt(out$status, 0)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.