blob: 953c9e41f1a2f72852373c31a207cb8f447d5ac9 [file] [log] [blame]
## tests of options in system() and system2.
options(warn = 1)
opts <- list("", NULL, FALSE, TRUE, "o1.txt", "o2.txt")
outs <- c("o1.txt", "o2.txt")
tos <- c(0, 10)
process <- function(res)
{
unlink(outs)
if(is.character(res)) {
cat("value:\n")
writeLines(res)
}
for(f in outs)
if(file.exists(f)) {
cat(f, ":\n", sep = "")
writeLines(readLines(f))
}
}
for(to in tos)
for(out in opts)
for(err in opts) {
## skip this for the sake of Unix-alikes
if(identical(err, TRUE) && !identical(out,TRUE)) next
cat(sprintf("\ntesting stdout = %s, stderr = %s\n",
deparse(out), deparse(err)))
process(system2("test-system2", stdout = out, stderr = err,
timeout = to))
}
for(to in tos) {
# timeout 0 uses different implementations from timeout 10
# the outputs should be identical
process(system("test-system2", timeout = to))
process(system("test-system2", ignore.stdout = TRUE, timeout = to))
process(system("test-system2", ignore.stderr = TRUE, timeout = to))
process(system("test-system2", ignore.stdout = TRUE, ignore.stderr = TRUE,
timeout = to))
process(system("test-system2", TRUE, timeout = to))
process(system("test-system2", TRUE, ignore.stdout = TRUE, timeout = to))
process(system("test-system2", TRUE, ignore.stdout = TRUE,
ignore.stderr = TRUE, timeout = to))
process(system2("test-system2", "1", input=letters[1:4], timeout = to))
process(system2("test-system2", "1", input=letters[1:4], stdout = TRUE,
timeout = to))
process(system("test-system2 1", input=letters[1:4], timeout = to))
process(system("test-system2 1", input=letters[1:4], intern = TRUE,
timeout = to))
tmp <- tempfile()
writeLines(letters[5:7], tmp)
process(system2("test-system2", "1", stdin = tmp, timeout = to))
process(system2("test-system2", "1", stdin = tmp, stdout = TRUE,
timeout = to))
process(system2("test-system2", "1", stdin = tmp, stdout = TRUE,
stderr = TRUE, timeout = to))
process(system2("test-system2", "1", stdin = tmp, stdout = "o1.txt",
stderr = "o1.txt", timeout = to))
process(system2("test-system2", "1", stdin = tmp, stdout = "o1.txt",
stderr = "o2.txt", timeout = to))
unlink(c(tmp, outs))
print(system("test-system2 5", timeout = to))
system("test-system2 6", intern = TRUE, timeout = to)
print(system2("test-system2", "7", timeout = to))
system2("test-system2", "8", stdout=TRUE, timeout = to)
}
# tests that time out
# (each runs for a second)
system("./test-system2 sleep 10", timeout = 1)
system("./test-system2 infinite_loop", timeout = 1)
system("./test-system2 sleep 10", timeout = 1, intern = T)
system("./test-system2 infinite_loop", timeout = 1, intern = T)
## test results with timeout set
stopifnot(identical(system("./test-system2 2", timeout = 1), 2L))
stopifnot(identical(system("./test-system2 2", timeout = 1, intern = T),
structure("stdout 1", status = 2L)))