## 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)))