diff --git a/testsuite/home/coll15 b/testsuite/home/coll15 index 5697b663..965b8ab7 100644 --- a/testsuite/home/coll15 +++ b/testsuite/home/coll15 @@ -1,4 +1,5 @@ module use --append {testsuite/modulefiles wspace} module load {space yc/4} module load foo/1 +module load {space y /1 } diff --git a/testsuite/home/coll16 b/testsuite/home/coll16 index e88f80bd..7f0bde39 100644 --- a/testsuite/home/coll16 +++ b/testsuite/home/coll16 @@ -1,3 +1,4 @@ module use --append {testsuite/modulefiles wspace} module load {space yc/4} {space yc/5} foo/1 module load {bar/2} +module load {space y /1 } diff --git a/testsuite/modulefiles.2/space ye/1.8 b/testsuite/modulefiles.2/space ye/1.8 new file mode 100644 index 00000000..acb3f8bd --- /dev/null +++ b/testsuite/modulefiles.2/space ye/1.8 @@ -0,0 +1,2 @@ +#%Module +prereq {space y @1 } baz @:1 diff --git a/testsuite/modulefiles.2/space ye/1.9 b/testsuite/modulefiles.2/space ye/1.9 new file mode 100644 index 00000000..bf9d4a2f --- /dev/null +++ b/testsuite/modulefiles.2/space ye/1.9 @@ -0,0 +1,2 @@ +#%Module +prereq {space y @a } baz @:1 diff --git a/testsuite/modulefiles.2/space ye/2.8 b/testsuite/modulefiles.2/space ye/2.8 new file mode 100644 index 00000000..ab2f1638 --- /dev/null +++ b/testsuite/modulefiles.2/space ye/2.8 @@ -0,0 +1,2 @@ +#%Module +conflict {space y @1 } baz @:1 diff --git a/testsuite/modulefiles.2/space ye/2.9 b/testsuite/modulefiles.2/space ye/2.9 new file mode 100644 index 00000000..8dd30c4c --- /dev/null +++ b/testsuite/modulefiles.2/space ye/2.9 @@ -0,0 +1,2 @@ +#%Module +conflict {space y @n } baz @:1 diff --git a/testsuite/modules.00-init/005-init_ts.exp b/testsuite/modules.00-init/005-init_ts.exp index 99b22bf4..ca30e743 100644 --- a/testsuite/modules.00-init/005-init_ts.exp +++ b/testsuite/modules.00-init/005-init_ts.exp @@ -549,6 +549,39 @@ if {[info exists tclsh_version]} { send_user "\tFail to detect tclsh version. Fallback to $tclsh_version version\n$errMsg" } +# create test modulefiles on the fly as those files finishing by a space character cannot +# be recorded in git repository (checkout will fail on Windows platform) +proc create_endspace_test_modulefiles {} { + set mp $::modpath.2 + set module {space y } + + file mkdir $mp/$module + + set fid [open $mp/$module/.modulerc w] + puts $fid {#%Module +module-version {space y /1 } {n } +module-version {space y /2.2} default +module-alias {space y /a } {space y /1 } +module-virtual {space y /v } {./1 }} + close $fid + + foreach f [list {1 } 2.2 2.5 2.7 2.10] { + set fid [open $mp/$module/$f w] + puts $fid {#%Module +module-whatis [module-info name]} + close $fid + } +} + +proc delete_endspace_test_modulefiles {} { + set mp $::modpath.2 + set module {space y } + foreach f [list .modulerc {1 } 2.2 2.5 2.7 2.10] { + file delete $mp/$module/$f + } + file delete $mp/$module +} + # # Set up the config-file variable if possible # diff --git a/testsuite/modules.20-locate/100-wspace.exp b/testsuite/modules.20-locate/100-wspace.exp index 70563190..4dd41e0c 100644 --- a/testsuite/modules.20-locate/100-wspace.exp +++ b/testsuite/modules.20-locate/100-wspace.exp @@ -607,6 +607,152 @@ unsetenv_path_var MODULES_LMALTNAME } +# +# tests of modules finishing with whitespace in modulepath finishing by a whitespace +# +set mp "$modpath wspac " +set mpre "$modpathre wspac " +if {!$is_symlink_supported} { + send_user "\tskipping tests over '$mp' modulepath as symbolic links are not supported on filesystem\n" +} else { + +# generate modulefiles that cannot be recorded in git repository +create_endspace_test_modulefiles + +# create modulepath finishing by space on the file (it crashes git checkout on Windows if saved in repo) +file link -symbolic $mp modulefiles.2 +setenv_path_var MODULEPATH $mp + +# unknown module +testouterr_cmd sh {avail -t un\ k} OK {} +testouterr_cmd sh {whatis un\ k} ERR "$err_path'un k'" +testouterr_cmd sh {load un\ k} ERR "$err_path'un k'" +testouterr_cmd sh {path un\ k} OK "$err_path'un k'" +testouterr_cmd sh {display un\ k} ERR "$err_path'un k'" + +# add another modulepath +set ans [list] +lappend ans [list setpath MODULEPATH "$modpath:$mp"] +testouterr_cmd_re sh "use $modpath" $ans {} +set ans [list] +lappend ans [list unsetpath MODULEPATH] +testouterr_cmd sh "unuse $modpath\\ wspac\\ " $ans {} + +# module whose name and target finish with space character +testouterr_cmd sh {avail -t space\ y\ /1\ } OK "$mp:\nspace y /1 (n )" +testouterr_cmd_re sh {whatis space\ y\ /1\ } OK "$modlin $mpre $modlin\n\\s+space y /1 : space y /1 " +set ans [list] +lappend ans [list setpath LOADEDMODULES "space y /1 "] +lappend ans [list setpath _LMFILES_ "$mp/space y /1 "] +lappend ans [list setpath MODULES_LMALTNAME "space y /1 &space y /n &space y /a "] +testouterr_cmd sh {load space\ y\ /1\ } $ans {} +testouterr_cmd sh {path space\ y\ /1\ } [list [list text "$mp/space y /1 "]] {} +testouterr_cmd_re sh {display space\ y\ /1\ } OK "$modlin\n$mpre/space y /1 :\n\nmodule-whatis\t{space y /1 }\n$modlin" +setenv_loaded_module [list "space\ y\ /1 "] [list "$mp/space y /1 "] +setenv_path_var MODULES_LMALTNAME "space y /1 &space y /n &space y /a " +testouterr_cmd sh {list} OK "$cur_loaded\n 1) space y /1 (n ) " +set ans [list] +lappend ans [list unsetpath LOADEDMODULES] +lappend ans [list unsetpath _LMFILES_] +lappend ans [list unsetpath MODULES_LMALTNAME] +testouterr_cmd sh {unload space\ y\ /1\ } $ans {} +# add another module +set ans [list] +lappend ans [list setpath LOADEDMODULES "space y /1 :space y /2.2"] +lappend ans [list setpath _LMFILES_ "$mp/space y /1 :$mp/space y /2.2"] +lappend ans [list setpath MODULES_LMALTNAME "space y /1 &space y /n &space y /a :space y /2.2&space y /default&space y "] +testouterr_cmd_re sh {load space\ y\ /2.2} $ans {} +unsetenv_loaded_module +unsetenv_path_var MODULES_LMALTNAME + +# alias whose name and target finish with space character +testouterr_cmd sh {avail -t space\ y\ /a\ } OK "$mp:\nspace y /a (@)" +testouterr_cmd_re sh {whatis space\ y\ /a\ } OK "$modlin $mpre $modlin\n\\s+space y /1 : space y /1 " +set ans [list] +lappend ans [list setpath LOADEDMODULES "space y /1 "] +lappend ans [list setpath _LMFILES_ "$mp/space y /1 "] +lappend ans [list setpath MODULES_LMALTNAME "space y /1 &space y /n &space y /a "] +testouterr_cmd sh {load space\ y\ /a\ } $ans {} +testouterr_cmd sh {path space\ y\ /a\ } [list [list text "$mp/space y /1 "]] {} +testouterr_cmd_re sh {display space\ y\ /a\ } OK "$modlin\n$mpre/space y /1 :\n\nmodule-whatis\t{space y /1 }\n$modlin" +setenv_loaded_module [list "space y /1 "] [list "$mp/space y /1 "] +setenv_path_var MODULES_LMALTNAME "space y /1 &space y /n &space y /a " +testouterr_cmd sh {list} OK "$cur_loaded\n 1) space y /1 (n ) " +set ans [list] +lappend ans [list unsetpath LOADEDMODULES] +lappend ans [list unsetpath _LMFILES_] +lappend ans [list unsetpath MODULES_LMALTNAME] +testouterr_cmd sh {unload space\ y\ /a\ } $ans {} +unsetenv_loaded_module +unsetenv_path_var MODULES_LMALTNAME + +# symbolic version whose name and target finish with space character +testouterr_cmd sh {avail -t space\ y\ /n\ } OK "$mp:\nspace y /1 (n )" +testouterr_cmd_re sh {whatis space\ y\ /n\ } OK "$modlin $mpre $modlin\n\\s+space y /1 : space y /1 " +set ans [list] +lappend ans [list setpath LOADEDMODULES "space y /1 "] +lappend ans [list setpath _LMFILES_ "$mp/space y /1 "] +lappend ans [list setpath MODULES_LMALTNAME "space y /1 &space y /n &space y /a "] +testouterr_cmd sh {load space\ y\ /n\ } $ans {} +testouterr_cmd sh {path space\ y\ /n\ } [list [list text "$mp/space y /1 "]] {} +testouterr_cmd_re sh {display space\ y\ /n\ } OK "$modlin\n$mpre/space y /1 :\n\nmodule-whatis\t{space y /1 }\n$modlin" +setenv_loaded_module [list "space y /1 "] [list "$mp/space y /1 "] +setenv_path_var MODULES_LMALTNAME "space y /1 &space y /n &space y /a " +testouterr_cmd sh {list} OK "$cur_loaded\n 1) space y /1 (n ) " +set ans [list] +lappend ans [list unsetpath LOADEDMODULES] +lappend ans [list unsetpath _LMFILES_] +lappend ans [list unsetpath MODULES_LMALTNAME] +testouterr_cmd sh {unload space\ y\ /n\ } $ans {} +unsetenv_loaded_module +unsetenv_path_var MODULES_LMALTNAME + +# default version +testouterr_cmd sh {avail -t space\ y\ /default} OK "$mp:\nspace y /2.2(default)" +testouterr_cmd_re sh {whatis space\ y\ /default} OK "$modlin $mpre $modlin\n\\s+space y /2.2: space y /2.2" +set ans [list] +lappend ans [list setpath LOADEDMODULES "space y /2.2"] +lappend ans [list setpath _LMFILES_ "$mp/space y /2.2"] +lappend ans [list setpath MODULES_LMALTNAME "space y /2.2&space y /default&space y "] +testouterr_cmd sh {load space\ y\ } $ans {} +testouterr_cmd sh {path space\ y\ } [list [list text "$mp/space y /2.2"]] {} +testouterr_cmd_re sh {display space\ y\ } OK "$modlin\n$mpre/space y /2.2:\n\nmodule-whatis\t{space y /2.2}\n$modlin" +setenv_loaded_module [list "space y /2.2"] [list "$mp/space y /2.2"] +setenv_path_var MODULES_LMALTNAME "space y /2.2&space y /default&space y " +testouterr_cmd sh {list} OK "$cur_loaded\n 1) space y /2.2(default) " +set ans [list] +lappend ans [list unsetpath LOADEDMODULES] +lappend ans [list unsetpath _LMFILES_] +lappend ans [list unsetpath MODULES_LMALTNAME] +testouterr_cmd sh {unload space\ y\ } $ans {} +unsetenv_loaded_module +unsetenv_path_var MODULES_LMALTNAME + +# virtual module whose name and target finish with space character +testouterr_cmd sh {avail -t space\ y\ /v\ } OK "$mp:\nspace y /v " +testouterr_cmd_re sh {whatis space\ y\ /v\ } OK "$modlin $mpre $modlin\n\\s+space y /v : space y /v " +set ans [list] +lappend ans [list setpath LOADEDMODULES "space y /v "] +lappend ans [list setpath _LMFILES_ "$mp/space y /1 "] +testouterr_cmd sh {load space\ y\ /v\ } $ans {} +testouterr_cmd sh {path space\ y\ /v\ } [list [list text "$mp/space y /1 "]] {} +testouterr_cmd_re sh {display space\ y\ /v\ } OK "$modlin\n$mpre/space y /1 :\n\nmodule-whatis\t{space y /v }\n$modlin" +setenv_loaded_module [list "space y /v "] [list "$mp/space y /1 "] +testouterr_cmd sh {list} OK "$cur_loaded\n 1) space y /v " +set ans [list] +lappend ans [list unsetpath LOADEDMODULES] +lappend ans [list unsetpath _LMFILES_] +testouterr_cmd sh {unload space\ y\ /v\ } $ans {} +unsetenv_loaded_module + +# delete modulepath link created for the test +file delete $mp + +# delete generated modulefiles +delete_endspace_test_modulefiles + +} + # # Cleanup diff --git a/testsuite/modules.61-coll/010-init_ts.exp b/testsuite/modules.61-coll/010-init_ts.exp index d691763a..b85b7dd1 100644 --- a/testsuite/modules.61-coll/010-init_ts.exp +++ b/testsuite/modules.61-coll/010-init_ts.exp @@ -154,12 +154,14 @@ set c15modpath1 "$modpath wspace" set c15modpath1re "$modpathre wspace" set c15mod1 {space yc/4} set c15mod2 foo/1 +set c15mod3 {space y /1 } set c16modpath1 "$modpath wspace" set c16modpath1re "$modpathre wspace" set c16mod1 {space yc/4} set c16mod2 {space yc/5} set c16mod3 foo/1 set c16mod4 bar/2 +set c16mod5 {space y /1 } set cdlmf "$cdmodpath1/$cdmod1:$cdmodpath1/$cdmod2:$cdmodpath1/$cdmod3:$cdmodpath1/$cdmod4:$cdmodpath1/$cdmod5" set cdlm "$cdmod1:$cdmod2:$cdmod3:$cdmod4:$cdmod5" @@ -208,11 +210,13 @@ set c13lmf $cdlmf set c13lmalt $cdlmalt set c13modpath $cdmodpath set c15modpath $c15modpath1 -set c15lmf $c15modpath1/$c15mod1:$c15modpath1/$c15mod2 -set c15lm $c15mod1:$c15mod2 +set c15lmf $c15modpath1/$c15mod1:$c15modpath1/$c15mod2:$c15modpath1/$c15mod3 +set c15lm $c15mod1:$c15mod2:$c15mod3 +set c15lmalt {space y /1 &space y /n &space y /a } set c16modpath $c16modpath1 -set c16lmf $c15modpath1/$c16mod1:$c16modpath1/$c16mod2:$c16modpath1/$c16mod3:$c16modpath1/$c16mod4 -set c16lm $c16mod1:$c16mod2:$c16mod3:$c16mod4 +set c16lmf $c15modpath1/$c16mod1:$c16modpath1/$c16mod2:$c16modpath1/$c16mod3:$c16modpath1/$c16mod4:$c16modpath1/$c16mod5 +set c16lm $c16mod1:$c16mod2:$c16mod3:$c16mod4:$c16mod5 +set c16lmalt {space y /1 &space y /n &space y /a } set mlu "module use --append" set mll "module load" @@ -232,7 +236,10 @@ set c7contre "$mll $c7mod1rel\n$mll $c7mod2rel\n$mll $c7mod3rel\n" set c8cont "$mlu $c8modpath1\n$mll $c8mod1\n$mll $c8mod2\n$mll $c8mod3\n" set c9cont "$mlu $c9modpath1\n$mll $c9mod1\n$mll --notuasked $c9mod2\n$mll $c9mod3\n" set c11cont "$mlu $c11modpath1\n$mll --notuasked $c11mod1\n$mll $c11mod2\n" -set c15cont "$mlu {$c15modpath1}\n$mll {$c15mod1}\n$mll $c15mod2\n" -set c15contre "$mlu {$c15modpath1re}\n$mll {$c15mod1}\n$mll $c15mod2\n" -set c16cont "$mlu {$c16modpath1}\n$mll {$c16mod1}\n$mll {$c16mod2}\n$mll $c16mod3\n$mll $c16mod4\n" -set c16contre "$mlu {$c16modpath1re}\n$mll {$c16mod1}\n$mll {$c16mod2}\n$mll $c16mod3\n$mll $c16mod4\n" +set c15cont "$mlu {$c15modpath1}\n$mll {$c15mod1}\n$mll $c15mod2\n$mll {$c15mod3}\n" +set c15contre "$mlu {$c15modpath1re}\n$mll {$c15mod1}\n$mll $c15mod2\n$mll {$c15mod3}\n" +set c16cont "$mlu {$c16modpath1}\n$mll {$c16mod1}\n$mll {$c16mod2}\n$mll $c16mod3\n$mll $c16mod4\n$mll {$c16mod4}\n" +set c16contre "$mlu {$c16modpath1re}\n$mll {$c16mod1}\n$mll {$c16mod2}\n$mll $c16mod3\n$mll $c16mod4\n$mll {$c16mod5}\n" + +# generate modulefiles that cannot be recorded in git repository +create_endspace_test_modulefiles diff --git a/testsuite/modules.61-coll/030-save.exp b/testsuite/modules.61-coll/030-save.exp index a73237ff..9d01a2a9 100644 --- a/testsuite/modules.61-coll/030-save.exp +++ b/testsuite/modules.61-coll/030-save.exp @@ -239,10 +239,13 @@ testoutfile_cmd sh "save $coll11" OK $hometestdotmod/$coll11f $c11cont unsetenv_path_var MODULES_LMPREREQ eval setenv_path_var MODULEPATH [split $c15modpath :] +eval setenv_path_var MODULES_LMALTNAME [split $c15lmalt :] setenv_loaded_module [split $c15lm :] [split $c15lmf :] testoutfile_cmd sh "save $coll15" OK $hometestdotmod/$coll15f $c15cont +unsetenv_path_var MODULES_LMALTNAME + # # test unsetting HOME diff --git a/testsuite/modules.61-coll/040-restore.exp b/testsuite/modules.61-coll/040-restore.exp index e7214e3e..f8f9d7e8 100644 --- a/testsuite/modules.61-coll/040-restore.exp +++ b/testsuite/modules.61-coll/040-restore.exp @@ -41,8 +41,8 @@ set c11errmsg "load $c11mod1\nLoading $c11mod1\nload $c11mod2\nLoading $c11mod2" set c12errmsg "unload $c9mod3\nUnloading $c9mod3\nunload $c9mod2\nUnloading $c9mod2\nunload $c9mod1\nUnloading $c9mod1\nload f4\nLoading f4\nload f5\nLoading f5\n\n[msg_load f6 [err_conlo f5]]\n\n[msg_load f7 [err_reqmis f6]]" set c13errmsg $cderrmsg set c14errmsg "unload m2\nUnloading m2\nload m3\nLoading m3" -set c15errmsg "Loading $c15mod1\nLoading $c15mod2" -set c16errmsg "Loading $c16mod1\nLoading $c16mod2\nLoading $c16mod3\nLoading $c16mod4" +set c15errmsg "Loading $c15mod1\nLoading $c15mod2\nLoading $c15mod3" +set c16errmsg "Loading $c16mod1\nLoading $c16mod2\nLoading $c16mod3\nLoading $c16mod4\nLoading $c16mod5" # set HOME to location containing collections set ORIG_HOME $env(HOME) @@ -537,12 +537,14 @@ set ans [list] lappend ans [list setpath MODULEPATH $c15modpath] lappend ans [list setpath LOADEDMODULES $c15lm] lappend ans [list setpath _LMFILES_ $c15lmf] +lappend ans [list setpath MODULES_LMALTNAME $c15lmalt] testouterr_cmd_re sh "restore $coll15fp" $ans $c15errmsg set ans [list] lappend ans [list setpath MODULEPATH $c16modpath] lappend ans [list setpath LOADEDMODULES $c16lm] lappend ans [list setpath _LMFILES_ $c16lmf] +lappend ans [list setpath MODULES_LMALTNAME $c16lmalt] testouterr_cmd_re sh "restore $coll16fp" $ans $c16errmsg } diff --git a/testsuite/modules.61-coll/999-cleanup.exp b/testsuite/modules.61-coll/999-cleanup.exp index 5a558026..32ec3e30 100644 --- a/testsuite/modules.61-coll/999-cleanup.exp +++ b/testsuite/modules.61-coll/999-cleanup.exp @@ -24,6 +24,9 @@ if { $verbose > 1 } { send_user "\tCleaning up after collection tests ...\n" } +# delete generated modulefiles +delete_endspace_test_modulefiles + # delete collections and associated dirs saved during this test set testcoll_list [glob -nocomplain -- "$hometestdotmod/*"] foreach testcoll $testcoll_list { diff --git a/testsuite/modules.70-maint/273-adv_version_spec-space.exp b/testsuite/modules.70-maint/273-adv_version_spec-space.exp index 6119f92b..68d07d6a 100644 --- a/testsuite/modules.70-maint/273-adv_version_spec-space.exp +++ b/testsuite/modules.70-maint/273-adv_version_spec-space.exp @@ -42,6 +42,9 @@ if {!$is_symlink_supported} { send_user "\tskipping tests over '$mp' modulepath as symbolic links are not supported on filesystem\n" } else { +# generate modulefiles that cannot be recorded in git repository +create_endspace_test_modulefiles + # enable advanced version spec for next tests setenv_var MODULES_ADVANCED_VERSION_SPEC 1 @@ -90,6 +93,13 @@ lappend ans [list setpath _LMFILES_ "$mp/sp.ce y+/0 2"] testouterr_cmd sh {load sp.ce\ y+ @0\ 2} $ans {} testouterr_cmd sh {load sp.ce\ y+@0\ 2} $ans {} +set ans [list] +lappend ans [list setpath LOADEDMODULES "space y /1 "] +lappend ans [list setpath _LMFILES_ "$mp/space y /1 "] +lappend ans [list setpath MODULES_LMALTNAME "space y /1 &space y /n &space y /a "] +testouterr_cmd sh {load space\ y\ @1\ } $ans {} +testouterr_cmd sh {load space\ y\ @1\ } $ans {} + # various syntaxes on prereq modulefile command @@ -116,7 +126,12 @@ lappend ans [list setpath MODULES_LMPREREQ "space ye/1.2&{sp.ce y+} @2.5<2.7|baz lappend ans [list setpath MODULES_LMNOTUASKED "sp.ce y+/2.7"] testouterr_cmd_re sh {load --auto space\ ye@1.2} $ans [msg_top_load "{space ye/1.2}" {} {sp.ce y\\+/2.7} {}] -testouterr_cmd sh {load --auto space\ ye@1.3} ERR [msg_load {space ye/1.3} [msg_moderr {extra characters after close-brace} {prereq {sp.ce y+}@} "$mp/space ye/1.3" 2]] +if {[cmpversion $tclsh_version 8.6] == -1} { + set errcmd "prereq {sp.ce y+}@2.5:2.7 baz @:1\n" +} else { + set errcmd {prereq {sp.ce y+}@} +} +testouterr_cmd sh {load --auto space\ ye@1.3} ERR [msg_load {space ye/1.3} [msg_moderr {extra characters after close-brace} $errcmd "$mp/space ye/1.3" 2]] set ans [list] lappend ans [list setpath LOADEDMODULES "sp.ce y+/2.7:space ye/1.4"] @@ -146,6 +161,22 @@ lappend ans [list setpath MODULES_LMPREREQ "space ye/1.7&{sp.ce y+@0 2}|baz @<1" lappend ans [list setpath MODULES_LMNOTUASKED "sp.ce y+/0 2"] testouterr_cmd_re sh {load --auto space\ ye@1.7} $ans [msg_top_load "{space ye/1.7}" {} {sp.ce y\\+/0 2} {}] +set ans [list] +lappend ans [list setpath LOADEDMODULES "space y /1 :space ye/1.8"] +lappend ans [list setpath _LMFILES_ "$mp/space y /1 :$mp/space ye/1.8"] +lappend ans [list setpath MODULES_LMPREREQ "space ye/1.8&{space y @1 }|baz @<1"] +lappend ans [list setpath MODULES_LMNOTUASKED "space y /1 "] +lappend ans [list setpath MODULES_LMALTNAME "space y /1 &space y /n &space y /a "] +testouterr_cmd_re sh {load --auto space\ ye@1.8} $ans [msg_top_load "{space ye/1.8}" {} "{space y /1 }" {}] + +set ans [list] +lappend ans [list setpath LOADEDMODULES "space y /1 :space ye/1.9"] +lappend ans [list setpath _LMFILES_ "$mp/space y /1 :$mp/space ye/1.9"] +lappend ans [list setpath MODULES_LMPREREQ "space ye/1.9&{space y @a }|baz @<1"] +lappend ans [list setpath MODULES_LMNOTUASKED "space y /1 "] +lappend ans [list setpath MODULES_LMALTNAME "space y /1 &space y /n &space y /a "] +testouterr_cmd_re sh {load --auto space\ ye@1.9} $ans [msg_top_load "{space ye/1.9}" {} "{space y /1 }" {}] + setenv_loaded_module [list {sp.ce y+/2.7}] [list "$mp/sp.ce y+/2.7"] set ans [list] @@ -196,6 +227,21 @@ lappend ans [list setpath _LMFILES_ "$mp/sp.ce y+/0 2:$mp/space ye/1.7"] lappend ans [list setpath MODULES_LMPREREQ "space ye/1.7&{sp.ce y+@0 2}|baz @<1"] testouterr_cmd_re sh {load --auto space\ ye@1.7} $ans {} +setenv_loaded_module [list {space y /1 }] [list "$mp/space y /1 "] +setenv_path_var MODULES_LMALTNAME "space y /1 &space y /n &space y /a " + +set ans [list] +lappend ans [list setpath LOADEDMODULES "space y /1 :space ye/1.8"] +lappend ans [list setpath _LMFILES_ "$mp/space y /1 :$mp/space ye/1.8"] +lappend ans [list setpath MODULES_LMPREREQ "space ye/1.8&{space y @1 }|baz @<1"] +testouterr_cmd_re sh {load --auto space\ ye@1.8} $ans {} + +set ans [list] +lappend ans [list setpath LOADEDMODULES "space y /1 :space ye/1.9"] +lappend ans [list setpath _LMFILES_ "$mp/space y /1 :$mp/space ye/1.9"] +lappend ans [list setpath MODULES_LMPREREQ "space ye/1.9&{space y @a }|baz @<1"] +testouterr_cmd_re sh {load --auto space\ ye@1.9} $ans {} + setenv_loaded_module [list {baz/1}] [list "$mp/baz/1"] set ans [list] @@ -290,6 +336,28 @@ lappend ans [list unsetpath _LMFILES_] lappend ans [list unsetpath MODULES_LMPREREQ] testouterr_cmd sh {unload --auto sp.ce\ y+/0\ 2} $ans [msg_top_unload "{sp.ce y+/0 2}" {space ye/1.7} {} {}] +setenv_loaded_module [list {space y /1 } {space ye/1.8}] [list "$mp/space y /1 " "$mp/space ye/1.8"] +setenv_path_var MODULES_LMPREREQ "space ye/1.8&{space y @1 }|baz @<1" +setenv_path_var MODULES_LMALTNAME "space y /1 &space y /n &space y /a " +set ans [list] +lappend ans [list unsetpath LOADEDMODULES] +lappend ans [list unsetpath _LMFILES_] +lappend ans [list unsetpath MODULES_LMPREREQ] +lappend ans [list unsetpath MODULES_LMALTNAME] +testouterr_cmd sh {unload --auto space\ y\ /1\ } $ans [msg_top_unload "{space y /1 }" {space ye/1.8} {} {}] +testouterr_cmd sh {unload --auto space\ y\ /a\ } $ans [msg_top_unload "{space y /1 }" {space ye/1.8} {} {}] + +setenv_loaded_module [list {space y /1 } {space ye/1.9}] [list "$mp/space y /1 " "$mp/space ye/1.9"] +setenv_path_var MODULES_LMPREREQ "space ye/1.9&{space y @a }|baz @<1" +setenv_path_var MODULES_LMALTNAME "space y /1 &space y /n &space y /a " +set ans [list] +lappend ans [list unsetpath LOADEDMODULES] +lappend ans [list unsetpath _LMFILES_] +lappend ans [list unsetpath MODULES_LMPREREQ] +lappend ans [list unsetpath MODULES_LMALTNAME] +testouterr_cmd sh {unload --auto space\ y\ /1\ } $ans [msg_top_unload "{space y /1 }" {space ye/1.9} {} {}] +testouterr_cmd sh {unload --auto space\ y\ /a\ } $ans [msg_top_unload "{space y /1 }" {space ye/1.9} {} {}] +unsetenv_path_var MODULES_LMALTNAME # unload dependent module baz/1 @@ -349,6 +417,22 @@ lappend ans [list unsetpath _LMFILES_] lappend ans [list unsetpath MODULES_LMPREREQ] testouterr_cmd sh {unload --auto baz/1} $ans [msg_top_unload baz/1 {space ye/1.7} {} {}] +setenv_loaded_module [list {baz/1} {space ye/1.8}] [list "$mp/baz/1" "$mp/space ye/1.8"] +setenv_path_var MODULES_LMPREREQ "space ye/1.8&{space y @1 }|baz @<1" +set ans [list] +lappend ans [list unsetpath LOADEDMODULES] +lappend ans [list unsetpath _LMFILES_] +lappend ans [list unsetpath MODULES_LMPREREQ] +testouterr_cmd sh {unload --auto baz/1} $ans [msg_top_unload baz/1 {space ye/1.8} {} {}] + +setenv_loaded_module [list {baz/1} {space ye/1.9}] [list "$mp/baz/1" "$mp/space ye/1.9"] +setenv_path_var MODULES_LMPREREQ "space ye/1.9&{space y @a }|baz @<1" +set ans [list] +lappend ans [list unsetpath LOADEDMODULES] +lappend ans [list unsetpath _LMFILES_] +lappend ans [list unsetpath MODULES_LMPREREQ] +testouterr_cmd sh {unload --auto baz/1} $ans [msg_top_unload baz/1 {space ye/1.9} {} {}] + # load depedent module {sp.ce y+/2.7} setenv_loaded_module [list {baz/1} {space ye/1.0}] [list "$mp/baz/1" "$mp/space ye/1.0"] @@ -405,6 +489,26 @@ lappend ans [list setpath _LMFILES_ "$mp/baz/1:$mp/sp.ce y+/0 2:$mp/space ye/1.7 lappend ans [list setpath MODULES_LMPREREQ "space ye/1.7&{sp.ce y+@0 2}|baz @<1"] testouterr_cmd_re sh {load --auto sp.ce\ y+/0\ 2} $ans [msg_top_load "{sp.ce y\\+/0 2}" {} {} "{space ye/1.7}"] +setenv_loaded_module [list {baz/1} {space ye/1.8}] [list "$mp/baz/1" "$mp/space ye/1.8"] +setenv_path_var MODULES_LMPREREQ "space ye/1.8&{space y @1 }|baz @<1" +set ans [list] +lappend ans [list setpath LOADEDMODULES "baz/1:space y /1 :space ye/1.8"] +lappend ans [list setpath _LMFILES_ "$mp/baz/1:$mp/space y /1 :$mp/space ye/1.8"] +lappend ans [list setpath MODULES_LMPREREQ "space ye/1.8&{space y @1 }|baz @<1"] +lappend ans [list setpath MODULES_LMALTNAME "space y /1 &space y /n &space y /a "] +testouterr_cmd_re sh {load --auto space\ y\ /1\ } $ans [msg_top_load "{space y /1 }" {} {} "{space ye/1.8}"] +testouterr_cmd_re sh {load --auto space\ y\ /a\ } $ans [msg_top_load "{space y /1 }" {} {} "{space ye/1.8}"] + +setenv_loaded_module [list {baz/1} {space ye/1.9}] [list "$mp/baz/1" "$mp/space ye/1.9"] +setenv_path_var MODULES_LMPREREQ "space ye/1.9&{space y @a }|baz @<1" +set ans [list] +lappend ans [list setpath LOADEDMODULES "baz/1:space y /1 :space ye/1.9"] +lappend ans [list setpath _LMFILES_ "$mp/baz/1:$mp/space y /1 :$mp/space ye/1.9"] +lappend ans [list setpath MODULES_LMPREREQ "space ye/1.9&{space y @a }|baz @<1"] +lappend ans [list setpath MODULES_LMALTNAME "space y /1 &space y /n &space y /a "] +testouterr_cmd_re sh {load --auto space\ y\ /1\ } $ans [msg_top_load "{space y /1 }" {} {} "{space ye/1.9}"] +testouterr_cmd_re sh {load --auto space\ y\ /a\ } $ans [msg_top_load "{space y /1 }" {} {} "{space ye/1.9}"] + # various syntaxes on conflict modulefile command unsetenv_loaded_module @@ -428,7 +532,12 @@ lappend ans [list setpath _LMFILES_ "$mp/space ye/2.2"] lappend ans [list setpath MODULES_LMCONFLICT "space ye/2.2&{sp.ce y+} @2.5<2.7&baz @<1"] testouterr_cmd sh {load --auto space\ ye@2.2} $ans {} -testouterr_cmd sh {load --auto space\ ye@2.3} ERR [msg_load {space ye/2.3} [msg_moderr {extra characters after close-brace} {conflict {sp.ce y+}@} "$mp/space ye/2.3" 2]] +if {[cmpversion $tclsh_version 8.6] == -1} { + set errcmd "conflict {sp.ce y+}@2.5:2.7 baz @:1\n" +} else { + set errcmd {conflict {sp.ce y+}@} +} +testouterr_cmd sh {load --auto space\ ye@2.3} ERR [msg_load {space ye/2.3} [msg_moderr {extra characters after close-brace} $errcmd "$mp/space ye/2.3" 2]] set ans [list] lappend ans [list setpath LOADEDMODULES "space ye/2.4"] @@ -454,6 +563,18 @@ lappend ans [list setpath _LMFILES_ "$mp/space ye/2.7"] lappend ans [list setpath MODULES_LMCONFLICT "space ye/2.7&{sp.ce y+@0 2}&baz @<1"] testouterr_cmd sh {load --auto space\ ye@2.7} $ans {} +set ans [list] +lappend ans [list setpath LOADEDMODULES "space ye/2.8"] +lappend ans [list setpath _LMFILES_ "$mp/space ye/2.8"] +lappend ans [list setpath MODULES_LMCONFLICT "space ye/2.8&{space y @1 }&baz @<1"] +testouterr_cmd sh {load --auto space\ ye@2.8} $ans {} + +set ans [list] +lappend ans [list setpath LOADEDMODULES "space ye/2.9"] +lappend ans [list setpath _LMFILES_ "$mp/space ye/2.9"] +lappend ans [list setpath MODULES_LMCONFLICT "space ye/2.9&{space y @n }&baz @<1"] +testouterr_cmd sh {load --auto space\ ye@2.9} $ans {} + # load conflicting module {sp.ce y+/2.7} setenv_loaded_module [list {space ye/2.0}] [list "$mp/space ye/2.0"] @@ -490,6 +611,16 @@ setenv_loaded_module [list {space ye/2.7}] [list "$mp/space ye/2.7"] setenv_path_var MODULES_LMCONFLICT "space ye/2.7&{sp.ce y+@0 2}&baz @<1" testouterr_cmd sh {load --auto sp.ce\ y+@0\ 2} ERR [msg_load {sp.ce y+/0 2} [err_conflict sp.ce\ y+/0\ 2 space\ ye/2.7]] +setenv_loaded_module [list {space ye/2.8}] [list "$mp/space ye/2.8"] +setenv_path_var MODULES_LMCONFLICT "space ye/2.8&{space y @1 }&baz @<1" +testouterr_cmd sh {load --auto space\ y\ @1\ } ERR [msg_load {space y /1 } [err_conflict space\ y\ /1\ space\ ye/2.8]] +testouterr_cmd sh {load --auto space\ y\ @n\ } ERR [msg_load {space y /1 } [err_conflict space\ y\ /1\ space\ ye/2.8]] + +setenv_loaded_module [list {space ye/2.9}] [list "$mp/space ye/2.9"] +setenv_path_var MODULES_LMCONFLICT "space ye/2.9&{space y @n }&baz @<1" +testouterr_cmd sh {load --auto space\ y\ @1\ } ERR [msg_load {space y /1 } [err_conflict space\ y\ /1\ space\ ye/2.9]] +testouterr_cmd sh {load --auto space\ y\ @n\ } ERR [msg_load {space y /1 } [err_conflict space\ y\ /1\ space\ ye/2.9]] + # load conflicting module baz/1 setenv_loaded_module [list {space ye/2.0}] [list "$mp/space ye/2.0"] @@ -520,6 +651,14 @@ setenv_loaded_module [list {space ye/2.7}] [list "$mp/space ye/2.7"] setenv_path_var MODULES_LMCONFLICT "space ye/2.7&{sp.ce y+@0 2}&baz @<1" testouterr_cmd sh {load --auto baz/1} ERR [msg_load {baz/1} [err_conflict baz/1 space\ ye/2.7]] +setenv_loaded_module [list {space ye/2.8}] [list "$mp/space ye/2.8"] +setenv_path_var MODULES_LMCONFLICT "space ye/2.8&{space y @1 }&baz @<1" +testouterr_cmd sh {load --auto baz/1} ERR [msg_load {baz/1} [err_conflict baz/1 space\ ye/2.8]] + +setenv_loaded_module [list {space ye/2.9}] [list "$mp/space ye/2.9"] +setenv_path_var MODULES_LMCONFLICT "space ye/2.9&{space y @n }&baz @<1" +testouterr_cmd sh {load --auto baz/1} ERR [msg_load {baz/1} [err_conflict baz/1 space\ ye/2.9]] + # conflicting module {sp.ce y+/2.7} loaded prior conflict definition unsetenv_path_var MODULES_LMCONFLICT setenv_loaded_module [list {sp.ce y+/2.7}] [list "$mp/sp.ce y+/2.7"] @@ -545,8 +684,15 @@ setenv_loaded_module [list {sp.ce y+/0 2}] [list "$mp/sp.ce y+/0 2"] testouterr_cmd sh {load --auto space\ ye@2.6} ERR [msg_load {space ye/2.6} [err_conflict {space ye/2.6} {sp.ce y+ @0 2}]] testouterr_cmd sh {load --auto space\ ye@2.7} ERR [msg_load {space ye/2.7} [err_conflict {space ye/2.7} {sp.ce y+@0 2}]] +setenv_loaded_module [list {space y /1 }] [list "$mp/space y /1 "] +setenv_path_var MODULES_LMALTNAME "space y /1 &space y /n &space y /a " + +testouterr_cmd sh {load --auto space\ ye@2.8} ERR [msg_load {space ye/2.8} [err_conflict {space ye/2.8} {space y @1 }]] +testouterr_cmd sh {load --auto space\ ye@2.9} ERR [msg_load {space ye/2.9} [err_conflict {space ye/2.9} {space y @n }]] + # conflicting module baz/1 loaded prior conflict definition unsetenv_path_var MODULES_LMCONFLICT +unsetenv_path_var MODULES_LMALTNAME setenv_loaded_module [list baz/1] [list "$mp/baz/1"] testouterr_cmd sh {load --auto space\ ye@2.0} ERR [msg_load {space ye/2.0} [err_conflict {space ye/2.0} {baz @:1}]] @@ -556,6 +702,8 @@ testouterr_cmd sh {load --auto space\ ye@2.4} ERR [msg_load {space ye/2.4} [err_ testouterr_cmd sh {load --auto space\ ye@2.5} ERR [msg_load {space ye/2.5} [err_conflict {space ye/2.5} {baz @:1}]] testouterr_cmd sh {load --auto space\ ye@2.6} ERR [msg_load {space ye/2.6} [err_conflict {space ye/2.6} {baz @:1}]] testouterr_cmd sh {load --auto space\ ye@2.7} ERR [msg_load {space ye/2.7} [err_conflict {space ye/2.7} {baz @:1}]] +testouterr_cmd sh {load --auto space\ ye@2.8} ERR [msg_load {space ye/2.8} [err_conflict {space ye/2.8} {baz @:1}]] +testouterr_cmd sh {load --auto space\ ye@2.9} ERR [msg_load {space ye/2.9} [err_conflict {space ye/2.9} {baz @:1}]] # redo the above mixed test with adv_vers_spec disabled @@ -578,6 +726,14 @@ testouterr_cmd sh {load sp.ce\ y+ @1.2 @2.5:2.7} $ans "$err_path'@1.2'\n$err_pat testouterr_cmd sh {load sp.ce\ y+ @0\ 2} $ans "$err_path'@0 2'" testouterr_cmd sh {load sp.ce\ y+@0\ 2} ERR "$err_path'sp.ce y+@0 2'" +set ans [list] +lappend ans [list setpath LOADEDMODULES "space y /2.2"] +lappend ans [list setpath _LMFILES_ "$mp/space y /2.2"] +lappend ans [list setpath MODULES_LMALTNAME "space y /2.2&space y /default&space y "] +lappend ans [list ERR] +testouterr_cmd sh {load space\ y\ @1\ } $ans "$err_path'@1 '" +testouterr_cmd sh {load space\ y\ @1\ } ERR "$err_path'space y @1 '" + # various syntaxes on prereq modulefile command set ans [list] @@ -604,7 +760,12 @@ lappend ans [list setpath MODULES_LMPREREQ "space ye/1.2&sp.ce y+|@2.5<2.7|baz|@ lappend ans [list setpath MODULES_LMNOTUASKED "sp.ce y+/2.10"] testouterr_cmd_re sh {load --auto space\ ye/1.2} $ans [msg_top_load "{space ye/1.2}" {} {sp.ce y\\+/2.10} {}] -testouterr_cmd sh {load --auto space\ ye/1.3} ERR [msg_load {space ye/1.3} [msg_moderr {extra characters after close-brace} {prereq {sp.ce y+}@} "$mp/space ye/1.3" 2]] +if {[cmpversion $tclsh_version 8.6] == -1} { + set errcmd "prereq {sp.ce y+}@2.5:2.7 baz @:1\n" +} else { + set errcmd {prereq {sp.ce y+}@} +} +testouterr_cmd sh {load --auto space\ ye/1.3} ERR [msg_load {space ye/1.3} [msg_moderr {extra characters after close-brace} $errcmd "$mp/space ye/1.3" 2]] set ans [list] lappend ans [list setpath LOADEDMODULES "baz/2:space ye/1.4"] @@ -640,6 +801,24 @@ lappend ans [list setpath MODULES_LMNOTUASKED "baz/2"] lappend ans [list ERR] testouterr_cmd_re sh {load --auto space\ ye/1.7} $ans [msg_top_load "{space ye/1.7}" {} {baz/2} {} "$err_path'sp.ce y\\+@0 2'"] +set ans [list] +lappend ans [list setpath LOADEDMODULES "baz/2:space ye/1.8"] +lappend ans [list setpath _LMFILES_ "$mp/baz/2:$mp/space ye/1.8"] +#lappend ans [list setpath MODULES_LMPREREQ "space ye/1.8&{space y @1 }|baz|@<1"] +lappend ans [list setpath MODULES_LMPREREQ "space ye/1.8&space y @1 |baz|@<1"] +lappend ans [list setpath MODULES_LMNOTUASKED "baz/2"] +lappend ans [list ERR] +testouterr_cmd_re sh {load --auto space\ ye/1.8} $ans [msg_top_load "{space ye/1.8}" {} {baz/2} {} "$err_path'space y @1 '"] + +set ans [list] +lappend ans [list setpath LOADEDMODULES "baz/2:space ye/1.9"] +lappend ans [list setpath _LMFILES_ "$mp/baz/2:$mp/space ye/1.9"] +#lappend ans [list setpath MODULES_LMPREREQ "space ye/1.9&{space y @a }|baz|@<1"] +lappend ans [list setpath MODULES_LMPREREQ "space ye/1.9&space y @a |baz|@<1"] +lappend ans [list setpath MODULES_LMNOTUASKED "baz/2"] +lappend ans [list ERR] +testouterr_cmd_re sh {load --auto space\ ye/1.9} $ans [msg_top_load "{space ye/1.9}" {} {baz/2} {} "$err_path'space y @a '"] + setenv_loaded_module [list {sp.ce y+/2.7}] [list "$mp/sp.ce y+/2.7"] set ans [list] @@ -761,7 +940,12 @@ lappend ans [list setpath _LMFILES_ "$mp/space ye/2.2"] lappend ans [list setpath MODULES_LMCONFLICT "space ye/2.2&sp.ce y+&@2.5<2.7&baz&@<1"] testouterr_cmd sh {load --auto space\ ye/2.2} $ans {} -testouterr_cmd sh {load --auto space\ ye/2.3} ERR [msg_load {space ye/2.3} [msg_moderr {extra characters after close-brace} {conflict {sp.ce y+}@} "$mp/space ye/2.3" 2]] +if {[cmpversion $tclsh_version 8.6] == -1} { + set errcmd "conflict {sp.ce y+}@2.5:2.7 baz @:1\n" +} else { + set errcmd {conflict {sp.ce y+}@} +} +testouterr_cmd sh {load --auto space\ ye/2.3} ERR [msg_load {space ye/2.3} [msg_moderr {extra characters after close-brace} $errcmd "$mp/space ye/2.3" 2]] set ans [list] lappend ans [list setpath LOADEDMODULES "space ye/2.4"] @@ -791,6 +975,20 @@ lappend ans [list setpath _LMFILES_ "$mp/space ye/2.7"] lappend ans [list setpath MODULES_LMCONFLICT "space ye/2.7&sp.ce y+@0 2&baz&@<1"] testouterr_cmd sh {load --auto space\ ye/2.7} $ans {} +set ans [list] +lappend ans [list setpath LOADEDMODULES "space ye/2.8"] +lappend ans [list setpath _LMFILES_ "$mp/space ye/2.8"] +#lappend ans [list setpath MODULES_LMCONFLICT "space ye/2.8&{space y @1 }&baz&@<1"] +lappend ans [list setpath MODULES_LMCONFLICT "space ye/2.8&space y @1 &baz&@<1"] +testouterr_cmd sh {load --auto space\ ye/2.8} $ans {} + +set ans [list] +lappend ans [list setpath LOADEDMODULES "space ye/2.9"] +lappend ans [list setpath _LMFILES_ "$mp/space ye/2.9"] +#lappend ans [list setpath MODULES_LMCONFLICT "space ye/2.9&{space y @n }&baz&@<1"] +lappend ans [list setpath MODULES_LMCONFLICT "space ye/2.9&space y @n &baz&@<1"] +testouterr_cmd sh {load --auto space\ ye/2.9} $ans {} + # load conflicting module {sp.ce y+/2.7} setenv_loaded_module [list {space ye/2.1}] [list "$mp/space ye/2.1"] @@ -847,6 +1045,12 @@ setenv_loaded_module [list baz/1] [list "$mp/baz/1"] testouterr_cmd sh {load --auto space\ ye/2.1} ERR [msg_load {space ye/2.1} [err_conflict {space ye/2.1} {baz}]] testouterr_cmd sh {load --auto space\ ye/2.5} ERR [msg_load {space ye/2.5} [err_conflict {space ye/2.5} {baz}]] +# delete generated modulefiles +delete_endspace_test_modulefiles + +unset ans +unset errcmd + } # @@ -864,4 +1068,3 @@ unsetenv_var MODULES_UNLOAD_MATCH_ORDER setenv_path_var MODULEPATH $modpath unset mp -unset ans diff --git a/testsuite/modules.90-avail/080-noindepth.exp b/testsuite/modules.90-avail/080-noindepth.exp index 7aa3fad0..6ded95cd 100644 --- a/testsuite/modules.90-avail/080-noindepth.exp +++ b/testsuite/modules.90-avail/080-noindepth.exp @@ -246,10 +246,38 @@ if {$install_availindepth eq {y}} { # test modulepath and module names containing space character setenv_var MODULES_AVAIL_INDEPTH 0 set mp "$modpath wspace" +if {!$is_symlink_supported} { + send_user "\tskipping tests over '$mp' modulepath as symbolic links are not supported on filesystem\n" +} else { + setenv_path_var MODULEPATH $mp testouterr_cmd sh {avail -t spacen} OK "$mp:\nspacen/\nspacenb/(dw s)\nspacenc/" testouterr_cmd sh {avail -t space\ ya} OK "$mp:\nspace ya/" +} + +set mp "$modpath wspac " +if {!$is_symlink_supported} { + send_user "\tskipping tests over '$mp' modulepath as symbolic links are not supported on filesystem\n" +} else { + +# generate modulefiles that cannot be recorded in git repository +create_endspace_test_modulefiles + +# create modulepath finishing by space on the file (it crashes git checkout on Windows if saved in repo) +file link -symbolic $mp modulefiles.2 +setenv_path_var MODULEPATH $mp +testouterr_cmd sh {avail -t space\ y\ } OK "$mp:\nspace y /" + +# delete modulepath link created for the test +file delete $mp + +# delete generated modulefiles +delete_endspace_test_modulefiles + +} + + # # Cleanup #