mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-19 05:50:30 +00:00
echo cmd | nim r - -arg1 -arg2 now works (#14210)
This commit is contained in:
@@ -52,7 +52,7 @@ proc processCmdLine(pass: TCmdLinePass, cmd: string; config: ConfigRef) =
|
||||
config.commandLine.add ':'
|
||||
config.commandLine.add p.val.quoteShell
|
||||
|
||||
if p.key == " ":
|
||||
if p.key == "": # `-` was passed to indicate main project is stdin
|
||||
p.key = "-"
|
||||
if processArgument(pass, p, argsCount, config): break
|
||||
else:
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user