echo cmd | nim r - -arg1 -arg2 now works (#14210)
This commit is contained in:
parent
a73d403901
commit
f115e40e6a
2 changed files with 32 additions and 2 deletions
|
|
@ -52,7 +52,7 @@ proc processCmdLine(pass: TCmdLinePass, cmd: string; config: ConfigRef) =
|
||||||
config.commandLine.add ':'
|
config.commandLine.add ':'
|
||||||
config.commandLine.add p.val.quoteShell
|
config.commandLine.add p.val.quoteShell
|
||||||
|
|
||||||
if p.key == " ":
|
if p.key == "": # `-` was passed to indicate main project is stdin
|
||||||
p.key = "-"
|
p.key = "-"
|
||||||
if processArgument(pass, p, argsCount, config): break
|
if processArgument(pass, p, argsCount, config): break
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,10 @@ discard """
|
||||||
|
|
||||||
import std/[strformat,os,osproc,strutils]
|
import std/[strformat,os,osproc,strutils]
|
||||||
|
|
||||||
|
const nim = getCurrentCompilerExe()
|
||||||
|
|
||||||
proc runCmd(file, options = ""): auto =
|
proc runCmd(file, options = ""): auto =
|
||||||
let mode = if existsEnv("NIM_COMPILE_TO_CPP"): "cpp" else: "c"
|
let mode = if existsEnv("NIM_COMPILE_TO_CPP"): "cpp" else: "c"
|
||||||
const nim = getCurrentCompilerExe()
|
|
||||||
const testsDir = currentSourcePath().parentDir
|
const testsDir = currentSourcePath().parentDir
|
||||||
let fileabs = testsDir / file.unixToNativePath
|
let fileabs = testsDir / file.unixToNativePath
|
||||||
doAssert fileabs.existsFile, fileabs
|
doAssert fileabs.existsFile, fileabs
|
||||||
|
|
@ -60,3 +61,32 @@ else: # don't run twice the same test
|
||||||
check "sizeof(Foo5) == 3"
|
check "sizeof(Foo5) == 3"
|
||||||
check "sizeof(struct Foo6) == "
|
check "sizeof(struct Foo6) == "
|
||||||
doAssert exitCode != 0
|
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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue