blob: 98e7469701dfe6149aebf5e51f70fdd0c62893be [file] [log] [blame]
R version 3.6.1 Patched (2019-09-30 r77236) -- "Action of the Toes"
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
>