summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/trunner.nim32
1 files changed, 31 insertions, 1 deletions
diff --git a/tests/trunner.nim b/tests/trunner.nim
index 263184571..65016d2f1 100644
--- a/tests/trunner.nim
+++ b/tests/trunner.nim
@@ -7,9 +7,10 @@ discard """
 
 import std/[strformat,os,osproc,strutils]
 
+const nim = getCurrentCompilerExe()
+
 proc runCmd(file, options = ""): auto =
   let mode = if existsEnv("NIM_COMPILE_TO_CPP"): "cpp" else: "c"
-  const nim = getCurrentCompilerExe()
   const testsDir = currentSourcePath().parentDir
   let fileabs = testsDir / file.unixToNativePath
   doAssert fileabs.existsFile, fileabs
@@ -60,3 +61,32 @@ else: # don't run twice the same test
       check "sizeof(Foo5) == 3"
       check "sizeof(struct Foo6) == "
       doAssert exitCode != 0
+
+  import streams
+  block: # stdin input
+    let nimcmd = fmt"{nim} r --hints:off - -firstparam '-second param'"
+    let inputcmd = "import os; echo commandLineParams()"
+    let expected = """@["-firstparam", "-second param"]"""
+    block:
+      let p = startProcess(nimcmd, options = {poEvalCommand})
+      p.inputStream.write("import os; echo commandLineParams()")
+      p.inputStream.close
+      var output = p.outputStream.readAll
+      let error = p.errorStream.readAll
+      doAssert p.waitForExit == 0
+      when false: # https://github.com/timotheecour/Nim/issues/152
+        # bug: `^[[0m` is being inserted somehow with `-` (regarless of --run)
+        doAssert error.len == 0, $(error,)
+      output.stripLineEnd
+      doAssert output == expected
+      p.errorStream.close
+      p.outputStream.close
+
+    block:
+      when defined(posix):
+        let cmd = fmt"echo 'import os; echo commandLineParams()' | {nimcmd}"
+        # avoid https://github.com/timotheecour/Nim/issues/152 by
+        # making sure `poStdErrToStdOut` isn't passed
+        var (output, exitCode) = execCmdEx(cmd, options = {poEvalCommand})
+        output.stripLineEnd
+        doAssert output == expected