Nothing
test_that("setting stdout to a file", {
stdout_to_file <- function(filename) {
con <- processx::conn_create_file(filename, write = TRUE)
processx::conn_set_stdout(con)
cat("output\n")
message("error")
close(con)
42
}
tmp <- tempfile()
on.exit(unlink(tmp), add = TRUE)
opt <- callr::r_process_options(
func = stdout_to_file,
args = list(filename = tmp))
on.exit(p$kill(), add = TRUE)
p <- callr::r_process$new(opt)
p$wait(5000)
expect_false(p$kill(close_connections = FALSE))
expect_equal(p$get_result(), 42)
expect_equal(p$read_all_error_lines(), "error")
expect_equal(p$read_all_output_lines(), character())
expect_equal(readLines(tmp), "output")
p$kill()
})
test_that("setting stderr to a file", {
stderr_to_file <- function(filename) {
con <- processx::conn_create_file(filename, write = TRUE)
processx::conn_set_stderr(con)
cat("output\n")
message("error")
close(con)
42
}
tmp <- tempfile()
on.exit(unlink(tmp), add = TRUE)
opt <- callr::r_process_options(
func = stderr_to_file,
args = list(filename = tmp))
on.exit(p$kill(), add = TRUE)
p <- callr::r_process$new(opt)
p$wait(5000)
expect_false(p$kill(close_connections = FALSE))
expect_equal(p$get_result(), 42)
expect_equal(p$read_all_output_lines(), "output")
expect_equal(p$read_all_error_lines(), character())
expect_equal(readLines(tmp), "error")
p$kill()
})
test_that("setting stdout multiple times", {
stdout_to_file <- function(file1, file2) {
con1 <- processx::conn_create_file(file1, write = TRUE)
processx::conn_set_stdout(con1)
cat("output\n")
message("error")
close(con1)
con2 <- processx::conn_create_file(file2, write = TRUE)
processx::conn_set_stdout(con2)
cat("output2\n")
message("error2")
close(con2)
42
}
tmp1 <- tempfile()
tmp2 <- tempfile()
on.exit(unlink(c(tmp1, tmp2)), add = TRUE)
opt <- callr::r_process_options(
func = stdout_to_file,
args = list(file1 = tmp1, file2 = tmp2))
on.exit(p$kill(), add = TRUE)
p <- callr::r_process$new(opt)
p$wait(5000)
expect_false(p$kill(close_connections = FALSE))
expect_equal(p$get_result(), 42)
expect_equal(p$read_all_error_lines(), c("error", "error2"))
expect_equal(p$read_all_output_lines(), character())
expect_equal(readLines(tmp1), "output")
expect_equal(readLines(tmp2), "output2")
p$kill()
})
test_that("set stdout to a pipe", {
rem_fun <- function() {
pipe <- processx::conn_create_pipepair()
processx::conn_set_stdout(pipe[[2]])
cat("output\n")
flush(stdout())
processx::conn_read_lines(pipe[[1]])
}
opt <- callr::r_process_options(func = rem_fun)
on.exit(p$kill(), add = TRUE)
p <- callr::r_process$new(opt)
p$wait(5000)
expect_false(p$kill())
expect_equal(p$get_result(), "output")
})
test_that("set stderr to a pipe", {
rem_fun <- function() {
pipe <- processx::conn_create_pipepair()
processx::conn_set_stderr(pipe[[2]])
message("error")
flush(stderr())
processx::conn_read_lines(pipe[[1]])
}
opt <- callr::r_process_options(func = rem_fun)
on.exit(p$kill(), add = TRUE)
p <- callr::r_process$new(opt)
p$wait(5000)
expect_false(p$kill())
expect_equal(p$get_result(), "error")
})
test_that("set stdout and save the old fd", {
stdout <- function(file1, file2) {
con1 <- processx::conn_create_file(file1, write = TRUE)
con2 <- processx::conn_create_file(file2, write = TRUE)
processx::conn_set_stdout(con1)
cat("output1\n")
old <- processx::conn_set_stdout(con2, drop = FALSE)
cat("output2\n")
processx::conn_set_stdout(old)
cat("output1 again\n")
42
}
tmp1 <- tempfile()
tmp2 <- tempfile()
on.exit(unlink(c(tmp1, tmp2)), add = TRUE)
opt <- callr::r_process_options(
func = stdout,
args = list(file1 = tmp1, file2 = tmp2))
on.exit(p$kill(), add = TRUE)
p <- callr::r_process$new(opt)
p$wait(5000)
expect_false(p$kill())
expect_equal(p$get_result(), 42)
expect_equal(readLines(tmp1), c("output1", "output1 again"))
expect_equal(readLines(tmp2), "output2")
})
test_that("set stderr and save the old fd", {
stderr <- function(file1, file2) {
con1 <- processx::conn_create_file(file1, write = TRUE)
con2 <- processx::conn_create_file(file2, write = TRUE)
processx::conn_set_stderr(con1)
message("output1")
old <- processx::conn_set_stderr(con2, drop = FALSE)
message("output2")
processx::conn_set_stderr(old)
message("output1 again")
42
}
tmp1 <- tempfile()
tmp2 <- tempfile()
on.exit(unlink(c(tmp1, tmp2)), add = TRUE)
opt <- callr::r_process_options(
func = stderr,
args = list(file1 = tmp1, file2 = tmp2))
on.exit(p$kill(), add = TRUE)
p <- callr::r_process$new(opt)
p$wait(5000)
expect_false(p$kill())
expect_equal(p$get_result(), 42)
expect_equal(readLines(tmp1), c("output1", "output1 again"))
expect_equal(readLines(tmp2), "output2")
})
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.