Add workingDir parameter to execProcess and test (#9549)
* Add workingDir parameter to execProcess * Fix tests/stdlib/tosproc.nim compile error * Suppress output from tosproc.nim
This commit is contained in:
parent
3f3aee4078
commit
3a3ff76526
3 changed files with 35 additions and 1 deletions
|
|
@ -64,6 +64,7 @@ const poUseShell* {.deprecated.} = poUsePath
|
||||||
## Deprecated alias for poUsePath.
|
## Deprecated alias for poUsePath.
|
||||||
|
|
||||||
proc execProcess*(command: string,
|
proc execProcess*(command: string,
|
||||||
|
workingDir: string = "",
|
||||||
args: openArray[string] = [],
|
args: openArray[string] = [],
|
||||||
env: StringTableRef = nil,
|
env: StringTableRef = nil,
|
||||||
options: set[ProcessOption] = {poStdErrToStdOut,
|
options: set[ProcessOption] = {poStdErrToStdOut,
|
||||||
|
|
@ -349,12 +350,13 @@ proc select*(readfds: var seq[Process], timeout = 500): int
|
||||||
|
|
||||||
when not defined(useNimRtl):
|
when not defined(useNimRtl):
|
||||||
proc execProcess(command: string,
|
proc execProcess(command: string,
|
||||||
|
workingDir: string = "",
|
||||||
args: openArray[string] = [],
|
args: openArray[string] = [],
|
||||||
env: StringTableRef = nil,
|
env: StringTableRef = nil,
|
||||||
options: set[ProcessOption] = {poStdErrToStdOut,
|
options: set[ProcessOption] = {poStdErrToStdOut,
|
||||||
poUsePath,
|
poUsePath,
|
||||||
poEvalCommand}): TaintedString =
|
poEvalCommand}): TaintedString =
|
||||||
var p = startProcess(command, args=args, env=env, options=options)
|
var p = startProcess(command, workingDir=workingDir, args=args, env=env, options=options)
|
||||||
var outp = outputStream(p)
|
var outp = outputStream(p)
|
||||||
result = TaintedString""
|
result = TaintedString""
|
||||||
var line = newStringOfCap(120).TaintedString
|
var line = newStringOfCap(120).TaintedString
|
||||||
|
|
|
||||||
8
tests/stdlib/osproctest.nim
Normal file
8
tests/stdlib/osproctest.nim
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
# This is test program for the osproc module.
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
echo getCurrentDir()
|
||||||
|
|
||||||
|
for i in 1..paramCount():
|
||||||
|
echo paramStr(i)
|
||||||
24
tests/stdlib/tosproc.nim
Normal file
24
tests/stdlib/tosproc.nim
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
discard """
|
||||||
|
file: "tospaths.nim"
|
||||||
|
output: ""
|
||||||
|
"""
|
||||||
|
# test the osproc module
|
||||||
|
|
||||||
|
import os, osproc
|
||||||
|
|
||||||
|
block execProcessTest:
|
||||||
|
let dir = parentDir(currentSourcePath())
|
||||||
|
let (outp, err) = execCmdEx("nim c " & quoteShell(dir / "osproctest.nim"))
|
||||||
|
doAssert err == 0
|
||||||
|
let exePath = dir / addFileExt("osproctest", ExeExt)
|
||||||
|
let outStr1 = execProcess(exePath, workingDir=dir, args=["foo", "b A r"], options={})
|
||||||
|
doAssert outStr1 == dir & "\nfoo\nb A r\n"
|
||||||
|
|
||||||
|
const testDir = "t e st"
|
||||||
|
createDir(testDir)
|
||||||
|
doAssert dirExists(testDir)
|
||||||
|
let outStr2 = execProcess(exePath, workingDir=testDir, args=["x yz"], options={})
|
||||||
|
doAssert outStr2 == absolutePath(testDir) & "\nx yz\n"
|
||||||
|
|
||||||
|
removeDir(testDir)
|
||||||
|
removeFile(exePath)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue