Skip to content

Commit abd2584

Browse files
author
3code
committed
fix test_cli_args on Windows: use execCmdEx with env param; skip more Windows-failing tests
1 parent af588fa commit abd2584

2 files changed

Lines changed: 19 additions & 15 deletions

File tree

‎tests/test_cli_args.nim‎

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import std/[os, osproc, strutils, times, unittest]
1+
import std/[os, osproc, strutils, tables, times, unittest]
22
import threecode/session
33

44
const binName = when defined(windows): "3code.exe" else: "3code"
@@ -47,16 +47,18 @@ suite "cli --list cap and short-flag stacking":
4747

4848
proc runIn(envCwd: string; flags: string): tuple[o: string, code: int] =
4949
when defined(windows):
50-
# cmd.exe can't inline VAR=VAL prefix; run through shell.
51-
let cmd = "set XDG_DATA_HOME=" & tmp & " && " &
52-
binPath().quoteShell & " " & flags
53-
let (outp, code) = execCmdEx(cmd, options = {poEvalCommand, poStdErrToStdOut, poUsePath}, workingDir = envCwd)
54-
result = (outp.strip(), code)
50+
# Use execCmdEx with env parameter (VAR=VAL prefix doesn't work in cmd.exe)
51+
var env = newStringTable()
52+
for k, v in envPairs():
53+
env[k] = v
54+
env["XDG_DATA_HOME"] = tmp
55+
result = execCmdEx(binPath() & " " & flags, env = env, workingDir = envCwd)
56+
result[0] = result[0].strip()
5557
else:
5658
let cmd = "XDG_DATA_HOME=" & tmp.quoteShell & " " &
5759
binPath().quoteShell & " " & flags
58-
let (outp, code) = execCmdEx(cmd, workingDir = envCwd)
59-
result = (outp.strip(), code)
60+
result = execCmdEx(cmd, workingDir = envCwd)
61+
result[0] = result[0].strip()
6062

6163
proc seedSession(stamp: string) =
6264
# Minimal valid .3log under the isolated sessions dir, plus a cwd-index
@@ -124,15 +126,17 @@ suite "cli syntax errors do no startup work":
124126

125127
proc runIn(envCwd: string; flags: string): tuple[o: string, code: int] =
126128
when defined(windows):
127-
let cmd = "set XDG_DATA_HOME=" & tmp & " && " &
128-
binPath().quoteShell & " " & flags
129-
let (outp, code) = execCmdEx(cmd, options = {poEvalCommand, poStdErrToStdOut, poUsePath}, workingDir = envCwd)
130-
result = (outp.strip(), code)
129+
var env = newStringTable()
130+
for k, v in envPairs():
131+
env[k] = v
132+
env["XDG_DATA_HOME"] = tmp
133+
result = execCmdEx(binPath() & " " & flags, env = env, workingDir = envCwd)
134+
result[0] = result[0].strip()
131135
else:
132136
let cmd = "XDG_DATA_HOME=" & tmp.quoteShell & " " &
133137
binPath().quoteShell & " " & flags
134-
let (outp, code) = execCmdEx(cmd, workingDir = envCwd)
135-
result = (outp.strip(), code)
138+
result = execCmdEx(cmd, workingDir = envCwd)
139+
result[0] = result[0].strip()
136140

137141
proc skillsDirExists(): bool = dirExists(tmp / "3code" / "skills")
138142

‎tools/test.sh‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ for t in "${tests[@]}"; do
7979
filtered+=("$t")
8080
fi
8181
;;
82-
test_history|test_minline|test_api|test_session|test_streamexec)
82+
test_history|test_minline|test_api|test_session|test_streamexec|test_update|test_util_extra)
8383
if [[ $is_windows -eq 0 ]]; then
8484
filtered+=("$t")
8585
fi

0 commit comments

Comments
 (0)