1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
test_that("polling for output available", {
px <- get_tool("px")
p <- process$new(px, c("sleep", "1", "outln", "foobar"), stdout = "|")
## Timeout
expect_equal(p$poll_io(0), c(output = "timeout", error = "nopipe",
process = "nopipe"))
p$wait()
expect_equal(p$poll_io(-1), c(output = "ready", error = "nopipe",
process = "nopipe"))
p$read_output_lines()
expect_equal(p$poll_io(-1), c(output = "ready", error = "nopipe",
process = "nopipe"))
p$kill(close_connections = FALSE)
expect_equal(p$poll_io(-1), c(output = "ready", error = "nopipe",
process = "nopipe"))
close(p$get_output_connection())
expect_equal(p$poll_io(-1), c(output = "closed", error = "nopipe",
process = "nopipe"))
})
test_that("polling for stderr", {
px <- get_tool("px")
p <- process$new(px, c("sleep", "1", "errln", "foobar"), stderr = "|")
## Timeout
expect_equal(p$poll_io(0), c(output = "nopipe", error = "timeout",
process = "nopipe"))
p$wait()
expect_equal(p$poll_io(-1), c(output = "nopipe", error = "ready",
process = "nopipe"))
p$read_error_lines()
expect_equal(p$poll_io(-1), c(output = "nopipe", error = "ready",
process = "nopipe"))
p$kill(close_connections = FALSE)
expect_equal(p$poll_io(-1), c(output = "nopipe", error = "ready",
process = "nopipe"))
close(p$get_error_connection())
expect_equal(p$poll_io(-1), c(output = "nopipe", error = "closed",
process = "nopipe"))
})
test_that("polling for both stdout and stderr", {
px <- get_tool("px")
p <- process$new(px, c("sleep", "1", "errln", "foo", "outln", "bar"),
stdout = "|", stderr = "|")
## Timeout
expect_equal(p$poll_io(0), c(output = "timeout", error = "timeout",
process = "nopipe"))
p$wait()
expect_true("ready" %in% p$poll_io(-1))
p$read_error_lines()
expect_true("ready" %in% p$poll_io(-1))
p$kill(close_connections = FALSE)
expect_true("ready" %in% p$poll_io(-1))
close(p$get_output_connection())
close(p$get_error_connection())
expect_equal(p$poll_io(-1), c(output = "closed", error = "closed",
process = "nopipe"))
})
test_that("multiple polls", {
px <- get_tool("px")
p <- process$new(
px, c("sleep", "1", "outln", "foo", "sleep", "1", "outln", "bar"),
stdout = "|", stderr = "|")
on.exit(p$kill(), add = TRUE)
out <- character()
while (p$is_alive()) {
p$poll_io(2000)
out <- c(out, p$read_output_lines())
}
expect_identical(out, c("foo", "bar"))
})
|