Skip to content

Commit 817e01a

Browse files
committed
ts: enclose variable value within single quote for shells
Signed-off-by: Xavier Delaruelle <[email protected]>
1 parent 6caf0b6 commit 817e01a

File tree

3 files changed

+42
-18
lines changed

3 files changed

+42
-18
lines changed

testsuite/config/base-config.exp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -224,16 +224,22 @@ proc shell_text {test_shell val {re_mode 0}} {
224224
return $answer
225225
}
226226

227-
proc shell_val {test_shell val {re_mode 0}} {
227+
proc shell_val {test_shell val {re_mode 0} {alias_val 0}} {
228228
if {$val ne "(.*)"} {
229+
if {$alias_val && $test_shell in {sh bash ksh zsh fish}} {
230+
set test_shell a-$test_shell
231+
}
229232
switch -- $test_shell {
230-
{sh} - {bash} - {ksh} - {zsh} - {csh} - {tcsh} - {fish} {
233+
{a-sh} - {a-bash} - {csh} - {tcsh} - {a-ksh} - {a-zsh} - {a-fish} {
231234
set val [regsub -all {([\\"'$|<>{}`*? ()!&;\[\]])} $val {\\\1}]
232235
}
233236
{lisp} - {cmake} {
234237
set val [regsub -all {(["])} $val {\\\1}]
235238
}
236-
{perl} - {python} - {ruby} {
239+
{sh} - {bash} - {ksh} - {zsh} {
240+
set val [string map {' '\\''} $val]
241+
}
242+
{fish} - {perl} - {python} - {ruby} {
237243
set val [regsub -all {(['])} $val {\\\1}]
238244
}
239245
{r} {
@@ -263,16 +269,16 @@ proc shell_set {test_shell var val {re_mode 0} {escval 1}} {
263269

264270
switch -- $test_shell {
265271
{sh} - {bash} - {ksh} - {zsh} {
266-
set answer "$var=$val; export $var;"
272+
set answer "$var='$val'; export $var;"
267273
}
268274
{csh} - {tcsh} {
269275
set answer "setenv $var $val;"
270276
}
271277
{fish} {
272278
if {$var eq "PATH"} {
273-
regsub -all ":" $val " " val
279+
set val [join [split $val :] {' '}]
274280
}
275-
set answer "set -xg $var $val;"
281+
set answer "set -xg $var '$val';"
276282
}
277283
{tcl} {
278284
set answer "set ::env${esc}($var${esc}) ${esc}{$val${esc}};"
@@ -364,7 +370,7 @@ proc shell_unset {test_shell var {re_mode 0}} {
364370

365371
proc shell_alias {test_shell var val {re_mode 0} {escval 1}} {
366372
if {$escval} {
367-
set val [shell_val $test_shell $val $re_mode]
373+
set val [shell_val $test_shell $val $re_mode 1]
368374
}
369375

370376
switch -- $test_shell {

testsuite/modules.50-cmds/022-setenv-eschars.exp

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,17 @@ set modulefile "$modpath/$module"
3939
# For the different shells ...
4040
#
4141

42-
lappend ans [list set pathelogical "abc\\ :\\ \\{\\}\\|\\<\\>\\!\\#\\$\\^\\&\\'\\\"\\(\\)@x%y\\\\z:sh\\*" noescval]
43-
lappend ans [list set _LMFILES_ $modulefile]
44-
lappend ans [list set LOADEDMODULES $module]
42+
lappend ans_csh [list set pathelogical "abc\\ :\\ \\{\\}\\|\\<\\>\\!\\#\\$\\^\\&\\'\\\"\\(\\)@x%y\\\\z:sh\\*" noescval]
43+
lappend ans_csh [list set _LMFILES_ $modulefile]
44+
lappend ans_csh [list set LOADEDMODULES $module]
45+
46+
lappend ans_sh [list set pathelogical "abc : {}|<>!#$^&'\\''\"()@x%y\\z:sh*" noescval]
47+
lappend ans_sh [list set _LMFILES_ $modulefile]
48+
lappend ans_sh [list set LOADEDMODULES $module]
49+
50+
lappend ans_fish [list set pathelogical "abc : {}|<>!#$^&\\'\"()@x%y\\z:sh*" noescval]
51+
lappend ans_fish [list set _LMFILES_ $modulefile]
52+
lappend ans_fish [list set LOADEDMODULES $module]
4553

4654
lappend ans2 [list set pathelogical "abc : {}|<>!#$^&'\"()@x%y\\z:sh*"]
4755
lappend ans2 [list set _LMFILES_ $modulefile]
@@ -56,12 +64,22 @@ lappend ans_pwsh [list set LOADEDMODULES $module]
5664
#
5765

5866
foreach sh $supported_shells {
59-
if {[lsearch -exact $real_shells $sh] >= 0} {
60-
test_cmd "$sh" "load $module" $ans
61-
} elseif {$sh == "pwsh"} {
62-
test_cmd "$sh" "load $module" $ans_pwsh
63-
} else {
64-
test_cmd "$sh" "load $module" $ans2
67+
switch -- $sh {
68+
sh - bash - ksh - zsh {
69+
test_cmd $sh "load $module" $ans_sh
70+
}
71+
fish {
72+
test_cmd $sh "load $module" $ans_fish
73+
}
74+
csh - tcsh {
75+
test_cmd $sh "load $module" $ans_csh
76+
}
77+
pwsh {
78+
test_cmd $sh "load $module" $ans_pwsh
79+
}
80+
default {
81+
test_cmd $sh "load $module" $ans2
82+
}
6583
}
6684
}
6785

testsuite/modules.50-cmds/593-abort_on_error-misc.exp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ testouterr_cmd bash {restore testsuite/home/coll-error-on-load} $ans_continue $t
7171

7272
# mod-to-sh command (abort_on_error has an impact)
7373
set ts_mod_to_sh_continue "all-pre-out
74-
TSPATH=dir1; export TSPATH;
75-
TS=ok; export TS;
74+
TSPATH='dir1'; export TSPATH;
75+
TS='ok'; export TS;
7676
alias alall=value;
7777
funcall () { value; };
7878
cd '/tmp';

0 commit comments

Comments
 (0)