R Under development (unstable) (2019-10-01 r77238) -- "Unsuffered Consequences" Copyright (C) 2019 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > ## 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)) + } testing stdout = "", stderr = "" stdout 1 stderr 1 testing stdout = "", stderr = NULL stdout 1 testing stdout = "", stderr = FALSE stdout 1 testing stdout = "", stderr = "o1.txt" stdout 1 o1.txt: stderr 1 testing stdout = "", stderr = "o2.txt" stdout 1 o2.txt: stderr 1 testing stdout = NULL, stderr = "" stderr 1 testing stdout = NULL, stderr = NULL testing stdout = NULL, stderr = FALSE testing stdout = NULL, stderr = "o1.txt" o1.txt: stderr 1 testing stdout = NULL, stderr = "o2.txt" o2.txt: stderr 1 testing stdout = FALSE, stderr = "" stderr 1 testing stdout = FALSE, stderr = NULL testing stdout = FALSE, stderr = FALSE testing stdout = FALSE, stderr = "o1.txt" o1.txt: stderr 1 testing stdout = FALSE, stderr = "o2.txt" o2.txt: stderr 1 testing stdout = TRUE, stderr = "" stderr 1 value: stdout 1 testing stdout = TRUE, stderr = NULL value: stdout 1 testing stdout = TRUE, stderr = FALSE value: stdout 1 testing stdout = TRUE, stderr = TRUE value: stdout 1 stderr 1 testing stdout = TRUE, stderr = "o1.txt" value: stdout 1 o1.txt: stderr 1 testing stdout = TRUE, stderr = "o2.txt" value: stdout 1 o2.txt: stderr 1 testing stdout = "o1.txt", stderr = "" stderr 1 o1.txt: stdout 1 testing stdout = "o1.txt", stderr = NULL o1.txt: stdout 1 testing stdout = "o1.txt", stderr = FALSE o1.txt: stdout 1 testing stdout = "o1.txt", stderr = "o1.txt" o1.txt: stdout 1 stderr 1 testing stdout = "o1.txt", stderr = "o2.txt" o1.txt: stdout 1 o2.txt: stderr 1 testing stdout = "o2.txt", stderr = "" stderr 1 o2.txt: stdout 1 testing stdout = "o2.txt", stderr = NULL o2.txt: stdout 1 testing stdout = "o2.txt", stderr = FALSE o2.txt: stdout 1 testing stdout = "o2.txt", stderr = "o1.txt" o1.txt: stderr 1 o2.txt: stdout 1 testing stdout = "o2.txt", stderr = "o2.txt" o2.txt: stdout 1 stderr 1 testing stdout = "", stderr = "" stdout 1 stderr 1 testing stdout = "", stderr = NULL stdout 1 testing stdout = "", stderr = FALSE stdout 1 testing stdout = "", stderr = "o1.txt" stdout 1 o1.txt: stderr 1 testing stdout = "", stderr = "o2.txt" stdout 1 o2.txt: stderr 1 testing stdout = NULL, stderr = "" stderr 1 testing stdout = NULL, stderr = NULL testing stdout = NULL, stderr = FALSE testing stdout = NULL, stderr = "o1.txt" o1.txt: stderr 1 testing stdout = NULL, stderr = "o2.txt" o2.txt: stderr 1 testing stdout = FALSE, stderr = "" stderr 1 testing stdout = FALSE, stderr = NULL testing stdout = FALSE, stderr = FALSE testing stdout = FALSE, stderr = "o1.txt" o1.txt: stderr 1 testing stdout = FALSE, stderr = "o2.txt" o2.txt: stderr 1 testing stdout = TRUE, stderr = "" stderr 1 value: stdout 1 testing stdout = TRUE, stderr = NULL value: stdout 1 testing stdout = TRUE, stderr = FALSE value: stdout 1 testing stdout = TRUE, stderr = TRUE value: stdout 1 stderr 1 testing stdout = TRUE, stderr = "o1.txt" value: stdout 1 o1.txt: stderr 1 testing stdout = TRUE, stderr = "o2.txt" value: stdout 1 o2.txt: stderr 1 testing stdout = "o1.txt", stderr = "" stderr 1 o1.txt: stdout 1 testing stdout = "o1.txt", stderr = NULL o1.txt: stdout 1 testing stdout = "o1.txt", stderr = FALSE o1.txt: stdout 1 testing stdout = "o1.txt", stderr = "o1.txt" o1.txt: stdout 1 stderr 1 testing stdout = "o1.txt", stderr = "o2.txt" o1.txt: stdout 1 o2.txt: stderr 1 testing stdout = "o2.txt", stderr = "" stderr 1 o2.txt: stdout 1 testing stdout = "o2.txt", stderr = NULL o2.txt: stdout 1 testing stdout = "o2.txt", stderr = FALSE o2.txt: stdout 1 testing stdout = "o2.txt", stderr = "o1.txt" o1.txt: stderr 1 o2.txt: stdout 1 testing stdout = "o2.txt", stderr = "o2.txt" o2.txt: stdout 1 stderr 1 > > 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) + } stdout 1 stderr 1 stderr 1 stdout 1 stderr 1 value: stdout 1 stderr 1 value: value: stdout 1 stderr 1 stdin: a stdin: b stdin: c stdin: d stderr 1 value: stdout 1 stdin: a stdin: b stdin: c stdin: d stdout 1 stderr 1 stdin: a stdin: b stdin: c stdin: d stderr 1 value: stdout 1 stdin: a stdin: b stdin: c stdin: d stdout 1 stderr 1 stdin: e stdin: f stdin: g stderr 1 value: stdout 1 stdin: e stdin: f stdin: g value: stdout 1 stderr 1 stdin: e stdin: f stdin: g o1.txt: stdout 1 stderr 1 stdin: e stdin: f stdin: g o1.txt: stdout 1 stdin: e stdin: f stdin: g o2.txt: stderr 1 stdout 1 stderr 1 [1] 5 stderr 1 Warning in system("test-system2 6", intern = TRUE, timeout = to) : running command 'test-system2 6' had status 6 stdout 1 stderr 1 [1] 7 stderr 1 Warning in system2("test-system2", "8", stdout = TRUE, timeout = to) : running command ''test-system2' 8' had status 8 stdout 1 stderr 1 stderr 1 stdout 1 stderr 1 value: stdout 1 stderr 1 value: value: stdout 1 stderr 1 stdin: a stdin: b stdin: c stdin: d stderr 1 value: stdout 1 stdin: a stdin: b stdin: c stdin: d stdout 1 stderr 1 stdin: a stdin: b stdin: c stdin: d stderr 1 value: stdout 1 stdin: a stdin: b stdin: c stdin: d stdout 1 stderr 1 stdin: e stdin: f stdin: g stderr 1 value: stdout 1 stdin: e stdin: f stdin: g value: stdout 1 stderr 1 stdin: e stdin: f stdin: g o1.txt: stdout 1 stderr 1 stdin: e stdin: f stdin: g o1.txt: stdout 1 stdin: e stdin: f stdin: g o2.txt: stderr 1 stdout 1 stderr 1 [1] 5 stderr 1 Warning in system("test-system2 6", intern = TRUE, timeout = to) : running command 'test-system2 6' had status 6 stdout 1 stderr 1 [1] 7 stderr 1 Warning in system2("test-system2", "8", stdout = TRUE, timeout = to) : running command ''test-system2' 8' had status 8 > > # tests that time out > # (each runs for a second) > > system("./test-system2 sleep 10", timeout = 1) stdout 1 stderr 1 Sleeping for 10 seconds... Warning in system("./test-system2 sleep 10", timeout = 1) : command './test-system2 sleep 10' timed out after 1s > system("./test-system2 infinite_loop", timeout = 1) stdout 1 stderr 1 Going to infinite loop... Warning in system("./test-system2 infinite_loop", timeout = 1) : command './test-system2 infinite_loop' timed out after 1s > system("./test-system2 sleep 10", timeout = 1, intern = T) stderr 1 Warning in system("./test-system2 sleep 10", timeout = 1, intern = T) : command './test-system2 sleep 10' timed out after 1s [1] "stdout 1" "Sleeping for 10 seconds..." attr(,"status") [1] 124 > system("./test-system2 infinite_loop", timeout = 1, intern = T) stderr 1 Warning in system("./test-system2 infinite_loop", timeout = 1, intern = T) : command './test-system2 infinite_loop' timed out after 1s [1] "stdout 1" "Going to infinite loop..." attr(,"status") [1] 124 > > ## test results with timeout set > > stopifnot(identical(system("./test-system2 2", timeout = 1), 2L)) stdout 1 stderr 1 > stopifnot(identical(system("./test-system2 2", timeout = 1, intern = T), + structure("stdout 1", status = 2L))) stderr 1 Warning in system("./test-system2 2", timeout = 1, intern = T) : running command './test-system2 2' had status 2 >