Nothing
test_that("r_bg runs", {
x <- r_bg(function() 1 + 1)
x$wait()
expect_identical(x$get_result(), 2)
rm(x)
gc()
})
test_that("r_bg takes arguments", {
x <- r_bg(function(x) x + 10, args = list(32))
x$wait()
expect_identical(x$get_result(), 42)
rm(x)
gc()
})
test_that("r_bg can be killed", {
x <- r_bg(function() Sys.sleep(2))
x$kill()
expect_false(x$is_alive())
expect_error(x$get_result())
rm(x)
gc()
})
test_that("r_bg can get the error back", {
x <- r_bg(function() 1 + "A", error = "error")
x$wait()
expect_error(x$get_result(), "non-numeric argument to binary operator")
rm(x)
gc()
})
test_that("can read standard output", {
x <- r_bg(function() cat("Hello world!\n"))
x$wait()
expect_equal(x$read_output_lines(), "Hello world!")
rm(x)
gc()
})
test_that("can read standard error", {
x <- r_bg(function() message("Hello world!"))
x$wait()
expect_equal(x$read_error_lines(), "Hello world!")
rm(x)
gc()
})
test_that("can read stdout and stderr", {
x <- r_bg(function() { cat("Hello world!\n"); message("Again!") })
x$wait()
expect_equal(x$read_output_lines(), "Hello world!")
expect_equal(x$read_error_lines(), "Again!")
rm(x)
gc()
})
test_that("cleans up temporary files", {
skip_on_cran()
rbg <- function() {
library(callr)
old <- dir(tempdir(), pattern = "^callr-")
rp <- callr::r_bg(function() 1+1)
on.exit(tryCatch(rp$kill, error = function(e) NULL), add = TRUE)
rp$wait(5000)
rp$kill()
result <- rp$get_result()
rm(rp)
gc()
gc()
unloadNamespace("callr")
new <- setdiff(dir(tempdir(), "^callr-"), old)
list(result = result, new = new)
}
out <- r(rbg)
expect_identical(out$result, 2)
expect_identical(out$new, character())
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.