Skip to content

Commit 9950b9e

Browse files
committed
Issue #792: fixed curly-brace usage consistency for functions from TCL modulefiles
1 parent ad00a77 commit 9950b9e

File tree

5 files changed

+85
-5
lines changed

5 files changed

+85
-5
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#%Module
2+
# Test module for edge cases and special scenarios
3+
4+
# Test with special characters in values
5+
setenv SPECIAL_CHARS_VAR "value with spaces and \$symbols"
6+
setenv QUOTES_VAR "value with \"quotes\" and 'apostrophes'"
7+
8+
# Test with empty values
9+
setenv EMPTY_VAR ""
10+
unsetenv UNSET_EMPTY_VAR
11+
12+
# Test mode-specific with special characters
13+
setenv --mode load SPECIAL_MODE_VAR "mode value with \$pecial chars"
14+
15+
# Test unsetenv and pushenv with modes
16+
unsetenv --mode unload MODE_UNSET_VAR
17+
pushenv --mode load MODE_PUSH_VAR "mode_push_value"
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#%Module
2+
# Test module for mixed syntax scenarios
3+
# Tests edge cases and combinations
4+
5+
# Simple calls - should use parentheses
6+
setenv BASIC_VAR "basic"
7+
unsetenv CLEANUP_VAR
8+
pushenv PUSH_VAR "pushed"
9+
10+
# Mode-specific calls - should use curly braces
11+
setenv --mode load LOAD_ONLY_VAR "load_value"
12+
setenv --mode unload UNLOAD_ONLY_VAR "unload_value"
13+
setenv --mode {load unload} BOTH_MODE_VAR "both_value"
14+
15+
# Respect flag - should use curly braces
16+
setenv -respect EXISTING_VAR "new_value"
17+
18+
# Path operations - should use curly braces (always have extra params)
19+
prepend-path MY_PATH "/my/path"
20+
append-path MY_LIB "/my/lib"
21+
remove-path OLD_PATH "/old/path"
22+
23+
# Combined mode and respect - should use curly braces
24+
setenv --mode load -respect COMBO_VAR "combo_value"
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#%Module
2+
# Test module for simple TCL function calls
3+
# These should display with parentheses after the fix
4+
5+
setenv SIMPLE_VAR "simple_value"
6+
unsetenv OLD_VAR
7+
pushenv STACK_VAR "stack_value"
8+
9+
# These should continue to use curly braces (have mode or other options)
10+
setenv --mode load MODE_VAR "mode_value"
11+
setenv -respect RESPECT_VAR "respect_value"
12+
prepend-path SIMPLE_PATH "/simple/path"

rt/mode_select/mode_select.tdesc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,15 @@ testdescript = {
9090
runLmod load load_test #31
9191
runLmod unload load_test #32
9292
93+
# Test module show with TCL syntax formatting
94+
# These tests demonstrate the curly brace vs parentheses issue
95+
runLmod show simple_test #33 (Test simple TCL calls - should show parentheses after fix)
96+
runLmod show mixed_syntax_test #34 (Test mixed simple/mode calls - mixed parentheses/braces)
97+
runLmod show edge_cases_test #35 (Test edge cases with special characters)
98+
99+
# Compare with existing env_test to show current problematic behavior
100+
runLmod show env_test #36 (Current TCL env_test - shows curly braces for simple calls)
101+
93102
HOME=$ORIG_HOME
94103
95104
cat _stdout.[0-9][0-9][0-9] > _stdout.orig

src/tcl2lua.tcl

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -523,10 +523,16 @@ proc setenv { args } {
523523
if {$mode == "display"} {
524524
set-env $var $val
525525
}
526-
if {$respect == "true"} {
527-
cmdargs_w_mode_select "setenv" $resultA(mode) $var $val $respect
526+
if {$resultA(mode) != "modeA={\"normal\"}" || $respect == "true"} {
527+
# Has mode selection or respect - use curly braces
528+
if {$respect == "true"} {
529+
cmdargs_w_mode_select "setenv" $resultA(mode) $var $val $respect
530+
} else {
531+
cmdargs_w_mode_select "setenv" $resultA(mode) $var $val
532+
}
528533
} else {
529-
cmdargs_w_mode_select "setenv" $resultA(mode) $var $val
534+
# Simple call - use parentheses
535+
cmdargs "setenv" $var $val
530536
}
531537
}
532538

@@ -553,7 +559,13 @@ proc unsetenv { args } {
553559
set-env $var $val
554560
}
555561
}
556-
cmdargs_w_mode_select "unsetenv" $resultA(mode) $var $val
562+
if {$resultA(mode) != "modeA={\"normal\"}"} {
563+
# Has mode selection - use curly braces
564+
cmdargs_w_mode_select "unsetenv" $resultA(mode) $var $val
565+
} else {
566+
# Simple call - use parentheses
567+
cmdargs "unsetenv" $var
568+
}
557569
}
558570

559571
proc require-fullname {} {
@@ -592,7 +604,13 @@ proc pushenv { args } {
592604
set-env $var $val
593605
set g_varsT($var) $val
594606

595-
cmdargs_w_mode_select "pushenv" $resultA(mode) $var $val
607+
if {$resultA(mode) != "modeA={\"normal\"}"} {
608+
# Has mode selection - use curly braces
609+
cmdargs_w_mode_select "pushenv" $resultA(mode) $var $val
610+
} else {
611+
# Simple call - use parentheses
612+
cmdargs "pushenv" $var $val
613+
}
596614
}
597615

598616
proc prepend-path { args } {

0 commit comments

Comments
 (0)