1############################################################################## 2# Modules Revision 3.0 3# Providing a flexible user environment 4# 5# File: modules.50-cmds/%M% 6# Revision: %I% 7# First Edition: 2018/04/16 8# Last Mod.: %U%, %G% 9# 10# Authors: Xavier Delaruelle, xavier.delaruelle@cea.fr 11# 12# Description: Testuite testsequence 13# Command: load, unload, display, test, help, whatis 14# Modulefiles: allenvchg 15# Sub-Command: append-path, prepend-path, setenv, remove-path, 16# unsetenv, getenv 17# 18# Comment: %C{ 19# Test all environment variable change modulefile commands against 20# the different modes 21# }C% 22# 23############################################################################## 24 25# ensure auto symbolic versions are not set for these tests 26setenv_var MODULES_ADVANCED_VERSION_SPEC 0 27 28set modulepath "$modpath.allin" 29set modulepathre "$modpathre.allin" 30set module "allenvchg" 31set modulefile "$modulepath/$module" 32set modulefilere "$modulepathre/$module" 33 34 35proc display_stderr_content {modfile content {premodlin 1}} { 36 if {$content ne ""} { 37 append content "\n" 38 } 39 40 if {$premodlin} { 41 set header "$::modlin\n" 42 } else { 43 set header "" 44 } 45 46 return "$header$modfile:\n\n$content$::modlin" 47} 48 49proc help_stderr_content {modfile content {procwarn 0} {premodlin 1}} { 50 if {$content ne ""} { 51 append content "\n" 52 } 53 54 if {$procwarn} { 55 append content "WARNING: Unable to find ModulesHelp in $modfile.\n" 56 } 57 58 if {$premodlin} { 59 set header "$::modlin\n" 60 } else { 61 set header "" 62 } 63 64 return "${header}Module Specific Help for $modfile:\n\n$content$::modlin" 65} 66 67proc test_stderr_content {modfile content {procwarn 0} {premodlin 1}} { 68 if {$content ne ""} { 69 append content "\n" 70 } 71 72 if {$procwarn} { 73 append content "WARNING: Unable to find ModulesTest in $modfile.\n" 74 } else { 75 append content "Test result: PASS\n" 76 } 77 78 if {$premodlin} { 79 set header "$::modlin\n" 80 } else { 81 set header "" 82 } 83 84 return "${header}Module Specific Test for $modfile:\n\n$content$::modlin" 85} 86 87 88# setup specific environment 89setenv_path_var MODULEPATH $modulepath 90 91# 92# test load mode 93# 94 95set tsall ",dir2,dir2:dir1,,_UNDEFINED_altered,dir2,_UNDEFINED_altered,ok8,ok9" 96 97set ans [list] 98lappend ans [list unset ts1] 99lappend ans [list set ts2 "dir2"] 100lappend ans [list set ts3 "dir2:dir1"] 101lappend ans [list set ts4 ""] 102lappend ans [list setpath TSPATH dir2] 103lappend ans [list set ts5 "_UNDEFINED_altered"] 104lappend ans [list set ts6 "dir2"] 105lappend ans [list set ts7 "_UNDEFINED_altered"] 106lappend ans [list set ts8 "ok8"] 107lappend ans [list set ts9 "ok9"] 108lappend ans [list setpath TSPATH2 ok8] 109lappend ans [list setpath TSPATH3 "ok8:ok9"] 110lappend ans [list setpath LOADEDMODULES "$module/1:$module/2"] 111lappend ans [list setpath _LMFILES_ "$modulefile/1:$modulefile/2"] 112lappend ans [list set tsall $tsall] 113# env changes spread to next loaded modulefiles 114testouterr_cmd_re "sh" "load $module/1 $module/2" $ans "" 115 116# test with value set to variable prior to load 117setenv_var ts2 "dir2" 118setenv_var ts3 "dir2:dir1" 119setenv_var ts4 "" 120setenv_path_var TSPATH "dir2" 121setenv_var ts5 "_UNDEFINED_altered" 122setenv_var ts6 "dir2" 123setenv_var ts7 "_UNDEFINED_altered" 124setenv_var ts8 "ok8" 125setenv_var ts9 "ok9" 126setenv_path_var TSPATH2 "ok8" 127setenv_path_var TSPATH3 "ok8:ok9" 128setenv_var tsall $tsall 129 130testouterr_cmd_re "sh" "load $module/1 $module/2" $ans "" 131 132 133# 134# test unload mode 135# 136 137# test with module loaded 138setenv_loaded_module [list "$module/1" "$module/2"] [list "$modulefile/1" "$modulefile/2"] 139 140set ans [list] 141lappend ans [list unset TSPATH2_modshare] 142lappend ans [list unset ts1] 143lappend ans [list unset ts2] 144lappend ans [list unset _LMFILES_] 145lappend ans [list unset LOADEDMODULES] 146lappend ans [list unset ts3] 147lappend ans [list unset ts4] 148lappend ans [list unset TSPATH] 149lappend ans [list unset ts5] 150lappend ans [list unset ts6] 151lappend ans [list unset TSPATH2] 152lappend ans [list unset ts7] 153lappend ans [list set TSPATH3 ok8] 154lappend ans [list unset ts8] 155lappend ans [list unset tsall] 156lappend ans [list unset ts9] 157lappend ans [list set TSPATH3_modshare "ok8:1"] 158lappend ans [list unset _LMFILES__modshare] 159lappend ans [list unset LOADEDMODULES_modshare] 160lappend ans [list unset TSPATH_modshare] 161testouterr_cmd "sh" "unload $module/1 $module/2" $ans "" 162 163# test with module loaded but vanished env vars 164unsetenv_var ts2 165unsetenv_var ts3 166unsetenv_var ts4 167unsetenv_path_var TSPATH 168unsetenv_var ts5 169unsetenv_var ts6 170unsetenv_var ts7 171unsetenv_var ts8 172unsetenv_var ts9 173unsetenv_path_var TSPATH2 174unsetenv_path_var TSPATH3 175unsetenv_var tsall 176 177set ans [list] 178lappend ans [list unset ts1] 179lappend ans [list unset ts2] 180lappend ans [list unset _LMFILES_] 181lappend ans [list unset LOADEDMODULES] 182lappend ans [list unset ts3] 183lappend ans [list unset ts4] 184lappend ans [list unset TSPATH] 185lappend ans [list unset ts5] 186lappend ans [list unset ts6] 187lappend ans [list unset ts7] 188lappend ans [list unset TSPATH2] 189lappend ans [list unset TSPATH3] 190lappend ans [list unset ts8] 191lappend ans [list unset tsall] 192lappend ans [list unset ts9] 193lappend ans [list unset _LMFILES__modshare] 194lappend ans [list unset LOADEDMODULES_modshare] 195testouterr_cmd "sh" "unload $module/1 $module/2" $ans "" 196 197# restore environment 198unsetenv_loaded_module 199 200 201# 202# test display mode 203# 204 205# test without module loaded 206set tsdisp "append-path\tTSPATH dir1 207prepend-path\tTSPATH dir2 208setenv\t\tts1 dir2:dir1 209remove-path\tTSPATH dir1 210setenv\t\tts2 dir2 211setenv\t\tts3 dir2:dir1 212unsetenv\tts1 213setenv\t\tts4 {} 214setenv\t\tts5 \\\$ts1 215remove-path\tTSPATH dir1 216setenv\t\tts6 dir2 217setenv\t\tts7 \\\$ts5 218setenv\t\tts8 ok8 219setenv\t\tts9 ok9 220append-path\tTSPATH2 ok8 221append-path\tTSPATH3 ok8 \\\$ts9 222module-whatis\t,dir2,dir2:dir1,,\\\$ts1altered,dir2,\\\$ts5,ok8,ok9" 223set tserr [display_stderr_content "$modulefilere/1" $tsdisp] 224set tsdisp "setenv\t\ttsall ,dir2,dir2:dir1,,\\\$ts1altered,dir2,\\\$ts5,ok8,ok9 225module-whatis\t,dir2,dir2:dir1,,\\\$ts1altered,dir2,\\\$ts5,ok8,ok9" 226append tserr "\n[display_stderr_content $modulefilere/2 $tsdisp 0]" 227testouterr_cmd_re "sh" "display $module/1 $module/2" "" $tserr 228 229# test with module loaded 230setenv_loaded_module [list "$module/1" "$module/2"] [list "$modulefile/1" "$modulefile/2"] 231setenv_var ts2 "dir2" 232setenv_var ts3 "dir2:dir1" 233setenv_var ts4 "" 234setenv_path_var TSPATH "dir2" 235setenv_var ts5 "_UNDEFINED_altered" 236setenv_var ts6 "dir2" 237setenv_var ts7 "_UNDEFINED_altered" 238setenv_var ts8 "ok8" 239setenv_var ts9 "ok9" 240setenv_path_var TSPATH2 "ok8" 241setenv_path_var TSPATH3 "ok8:ok9" 242setenv_var tsall $tsall 243 244testouterr_cmd_re "sh" "display $module/1 $module/2" "" $tserr 245 246# restore environment 247unsetenv_loaded_module 248unsetenv_var ts2 249unsetenv_var ts3 250unsetenv_var ts4 251unsetenv_path_var TSPATH 252unsetenv_var ts5 253unsetenv_var ts6 254unsetenv_var ts7 255unsetenv_var ts8 256unsetenv_var ts9 257unsetenv_path_var TSPATH2 258unsetenv_path_var TSPATH3 259unsetenv_var tsall 260 261 262# 263# test help mode 264# 265 266# test without module loaded 267set tserr [help_stderr_content "$modulefilere/1" $tsall] 268append tserr "\n[help_stderr_content $modulefilere/2 $tsall 0 0]" 269testouterr_cmd_re "sh" "help $module/1 $module/2" "" $tserr 270 271# test with module loaded 272setenv_loaded_module [list "$module/1" "$module/2"] [list "$modulefile/1" "$modulefile/2"] 273setenv_var ts2 "dir2" 274setenv_var ts3 "dir2:dir1" 275setenv_var ts4 "" 276setenv_path_var TSPATH "dir2" 277setenv_var ts5 "_UNDEFINED_altered" 278setenv_var ts6 "dir2" 279setenv_var ts7 "_UNDEFINED_altered" 280setenv_var ts8 "ok8" 281setenv_var ts9 "ok9" 282setenv_path_var TSPATH2 "ok8" 283setenv_path_var TSPATH3 "ok8:ok9" 284setenv_var tsall $tsall 285 286testouterr_cmd_re "sh" "help $module/1 $module/2" "" $tserr 287 288# restore environment 289unsetenv_loaded_module 290unsetenv_var ts2 291unsetenv_var ts3 292unsetenv_var ts4 293unsetenv_path_var TSPATH 294unsetenv_var ts5 295unsetenv_var ts6 296unsetenv_var ts7 297unsetenv_var ts8 298unsetenv_var ts9 299unsetenv_path_var TSPATH2 300unsetenv_path_var TSPATH3 301unsetenv_var tsall 302 303 304# 305# test test mode 306# 307 308# test without module loaded 309set tserr [test_stderr_content "$modulefilere/1" $tsall] 310append tserr "\n[test_stderr_content $modulefilere/2 $tsall 0 0]" 311testouterr_cmd_re "sh" "test $module/1 $module/2" "" $tserr 312 313# test with module loaded 314setenv_loaded_module [list "$module/1" "$module/2"] [list "$modulefile/1" "$modulefile/2"] 315setenv_var ts2 "dir2" 316setenv_var ts3 "dir2:dir1" 317setenv_var ts4 "" 318setenv_path_var TSPATH "dir2" 319setenv_var ts5 "_UNDEFINED_altered" 320setenv_var ts6 "dir2" 321setenv_var ts7 "_UNDEFINED_altered" 322setenv_var ts8 "ok8" 323setenv_var ts9 "ok9" 324setenv_path_var TSPATH2 "ok8" 325setenv_path_var TSPATH3 "ok8:ok9" 326setenv_var tsall $tsall 327 328testouterr_cmd_re "sh" "test $module/1 $module/2" "" $tserr 329 330# restore environment 331unsetenv_loaded_module 332unsetenv_var ts2 333unsetenv_var ts3 334unsetenv_var ts4 335unsetenv_path_var TSPATH 336unsetenv_var ts5 337unsetenv_var ts6 338unsetenv_var ts7 339unsetenv_var ts8 340unsetenv_var ts9 341unsetenv_path_var TSPATH2 342unsetenv_path_var TSPATH3 343unsetenv_var tsall 344 345 346# 347# test whatis mode 348# 349 350# *setenv and *-path cmds only init var if undefined with empty value 351set tsallwh1 ",,,,altered,,,," 352set tsallwh2 ",dir2,dir2:dir1,,_UNDEFINED_alteredaltered,dir2,_UNDEFINED_altered,ok8,ok9" 353 354# test without module loaded 355set whatis "$modlin $modulepathre $modlin\n\\s+$module/1: $tsallwh1\n\\s+$module/2: " 356testouterr_cmd_re "sh" "whatis $module" "" $whatis 357 358# test with module loaded 359setenv_loaded_module [list "$module/1" "$module/2"] [list "$modulefile/1" "$modulefile/2"] 360setenv_var ts2 "dir2" 361setenv_var ts3 "dir2:dir1" 362setenv_var ts4 "" 363setenv_path_var TSPATH "dir2" 364setenv_var ts5 "_UNDEFINED_altered" 365setenv_var ts6 "dir2" 366setenv_var ts7 "_UNDEFINED_altered" 367setenv_var ts8 "ok8" 368setenv_var ts9 "ok9" 369setenv_path_var TSPATH2 "ok8" 370setenv_path_var TSPATH3 "ok8:ok9" 371setenv_var tsall $tsall 372 373set whatis "$modlin $modulepathre $modlin\n\\s+$module/1: $tsallwh2\n\\s+$module/2: $tsall" 374testouterr_cmd_re "sh" "whatis $module" "" $whatis 375 376# restore environment 377unsetenv_loaded_module 378unsetenv_var ts2 379unsetenv_var ts3 380unsetenv_var ts4 381unsetenv_path_var TSPATH 382unsetenv_var ts5 383unsetenv_var ts6 384unsetenv_var ts7 385unsetenv_var ts8 386unsetenv_var ts9 387unsetenv_path_var TSPATH2 388unsetenv_path_var TSPATH3 389unsetenv_var tsall 390 391 392# 393# Cleanup 394# 395 396unsetenv_var MODULES_ADVANCED_VERSION_SPEC 397# restore MODULEPATH 398setenv_path_var MODULEPATH $modpath 399 400unset module 401unset modulefile 402unset modulefilere 403unset modulepath 404unset modulepathre 405unset whatis 406unset tsdisp 407unset tserr 408unset tsall 409unset tsallwh1 410unset tsallwh2 411unset ans 412 413# remove procs 414rename display_stderr_content {} 415rename help_stderr_content {} 416rename test_stderr_content {} 417