|
| 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: 2024/10/29 |
| 8 | +# Last Mod.: %U%, %G% |
| 9 | +# |
| 10 | +# Authors: Xavier Delaruelle, [email protected] |
| 11 | +# |
| 12 | +# Description: Testuite testsequence |
| 13 | +# Command: load |
| 14 | +# Modulefiles: modulepath-opt, qux |
| 15 | +# Sub-Command: |
| 16 | +# |
| 17 | +# Comment: %C{ |
| 18 | +# Test --modulepath option of prereq, prereq-all and always-load |
| 19 | +# modulefile commands over loaded environment |
| 20 | +# }C% |
| 21 | +# |
| 22 | +############################################################################## |
| 23 | + |
| 24 | +set mp $modpath.4 |
| 25 | +set mpre $modpathre.4 |
| 26 | +setenv_path_var MODULEPATH $mp |
| 27 | + |
| 28 | +skip_if_quick_mode |
| 29 | + |
| 30 | + |
| 31 | +# |
| 32 | +# requirement already loaded but not from required modulepath |
| 33 | +# |
| 34 | + |
| 35 | +setenv_var TESTSUITE_MODULEPATH_OPT loaded_from_other_dir |
| 36 | +setenv_loaded_module [list qux/1] [list $mp/qux/1] |
| 37 | + |
| 38 | +setenv_var MODULES_CONFLICT_UNLOAD 0 |
| 39 | +set tserr [msg_load qux/1 $err_modfromdiffpathloaded]\n\n[msg_load modulepath-opt/1 [err_reqlo_path qux/1]] |
| 40 | +testouterr_cmd sh {load --auto modulepath-opt/1} ERR $tserr |
| 41 | + |
| 42 | +setenv_var MODULES_CONFLICT_UNLOAD 1 |
| 43 | +#FIXME: mp.4/qux/1 should be unloaded and replaced by mp3/qux/1 |
| 44 | +testouterr_cmd sh {load --auto modulepath-opt/1} ERR $tserr |
| 45 | + |
| 46 | + |
| 47 | +# |
| 48 | +# requirement already loaded but not from required modulepath |
| 49 | +# and not required variant |
| 50 | +# |
| 51 | + |
| 52 | +setenv_var MODULES_ADVANCED_VERSION_SPEC 1 |
| 53 | +setenv_var TESTSUITE_MODULEPATH_OPT loaded_from_other_dir_variant |
| 54 | +setenv_loaded_module [list qux/1] [list $mp/qux/1] |
| 55 | +setenv_var __MODULES_LMVARIANT qux/1&foo|val2|0|0 |
| 56 | + |
| 57 | +setenv_var MODULES_CONFLICT_UNLOAD 0 |
| 58 | +set tserr [msg_load qux/1{foo=val1} $err_modfromdiffpathloaded]\n\n[msg_load modulepath-opt/1 [err_reqlo_path qux/1{foo=val1}]] |
| 59 | +testouterr_cmd sh {load --auto modulepath-opt/1} ERR $tserr |
| 60 | + |
| 61 | +setenv_var MODULES_CONFLICT_UNLOAD 1 |
| 62 | +#FIXME: mp.4/qux/1{foo=val2} should be unloaded and replaced by mp3/qux/1{foo=val1} |
| 63 | +testouterr_cmd sh {load --auto modulepath-opt/1} ERR $tserr |
| 64 | + |
| 65 | +unsetenv_var __MODULES_LMVARIANT |
| 66 | +unsetenv_var MODULES_ADVANCED_VERSION_SPEC |
| 67 | + |
| 68 | + |
| 69 | +# |
| 70 | +# requirement not loaded, then loaded but not from required modulepath |
| 71 | +# |
| 72 | + |
| 73 | +setenv_var TESTSUITE_MODULEPATH_OPT loaded_after_from_other_dir |
| 74 | +setenv_loaded_module [list modulepath-opt/1] [list $mp/modulepath-opt/1] |
| 75 | +setenv_var __MODULES_LMPREREQ modulepath-opt/1&qux/1 |
| 76 | + |
| 77 | +#FIXME: modulepath-opt/1 should not get reloaded as mp4/qux/1 is not a requirement |
| 78 | +set tserr [msg_load modulepath-opt/1 [err_prereq_path qux/1]]\n\n[msg_load qux/1 [err_depre modulepath-opt/1]] |
| 79 | +testouterr_cmd sh {load --auto qux/1} ERR $tserr |
| 80 | + |
| 81 | + |
| 82 | +# |
| 83 | +# requirement not loaded, then loaded but from required modulepath |
| 84 | +# |
| 85 | + |
| 86 | +setenv_var TESTSUITE_MODULEPATH_OPT loaded_after_from_correct_dir |
| 87 | +setenv_loaded_module [list modulepath-opt/1] [list $mp/modulepath-opt/1] |
| 88 | +setenv_var __MODULES_LMPREREQ modulepath-opt/1&qux/1 |
| 89 | + |
| 90 | +set ans [list] |
| 91 | +lappend ans [list set __MODULES_LMPREREQ modulepath-opt/1&qux/1] |
| 92 | +lappend ans [list set _LMFILES_ $mp/qux/1:$mp/modulepath-opt/1] |
| 93 | +lappend ans [list set LOADEDMODULES qux/1:modulepath-opt/1] |
| 94 | +set tserr [msg_top_load qux/1 {} {} modulepath-opt/1] |
| 95 | +testouterr_cmd sh {load --auto qux/1} $ans $tserr |
| 96 | + |
| 97 | + |
| 98 | +# |
| 99 | +# dependent reload trigger with requirement chain specific to modulepath |
| 100 | +# |
| 101 | + |
| 102 | +setenv_var TESTSUITE_MODULEPATH_OPT depre_trigger |
| 103 | + |
| 104 | +# dependency from bad modulepath is loaded |
| 105 | +setenv_loaded_module [list qux/1 modulepath-opt/1] [list $mp/qux/1 $mp/modulepath-opt/1] |
| 106 | +setenv_var __MODULES_LMPREREQ qux/1&qux/1|foo/1.0:modulepath-opt/1&qux/1 |
| 107 | + |
| 108 | +#FIXME: modulepath-opt/1 should not get reloaded as mp4/qux/1 is not a requirement |
| 109 | +set tserr [msg_load modulepath-opt/1 [err_prereq_path qux/1]]\n\n[msg_load foo/1.0 [err_depre modulepath-opt/1]] |
| 110 | +testouterr_cmd sh {load --auto foo/1.0} ERR $tserr |
| 111 | + |
| 112 | +setenv_var MODULEPATH $mp:$modpath.3 |
| 113 | +#FIXME: modulepath-opt/1 should not get reloaded as mp4/qux/1 is not a requirement |
| 114 | +testouterr_cmd sh {load --auto foo/1.0} ERR $tserr |
| 115 | + |
| 116 | +# qux/1 is reloaded from mp3 as it is the priority enabled modulepath |
| 117 | +setenv_var MODULEPATH $modpath.3:$mp |
| 118 | +set ans [list] |
| 119 | +lappend ans [list set __MODULES_LMPREREQ qux/1&qux/1|foo/1.0:modulepath-opt/1&qux/1] |
| 120 | +lappend ans [list set _LMFILES_ $modpath.3/foo/1.0:$modpath.3/qux/1:$mp/modulepath-opt/1] |
| 121 | +lappend ans [list set LOADEDMODULES foo/1.0:qux/1:modulepath-opt/1] |
| 122 | +set tserr [msg_top_load foo/1.0 {} {} {qux/1 modulepath-opt/1}] |
| 123 | +testouterr_cmd sh {load --auto foo/1.0} $ans $tserr |
| 124 | +setenv_var MODULEPATH $mp |
| 125 | + |
| 126 | + |
| 127 | +# dependency from expected modulepath is loaded |
| 128 | +setenv_loaded_module [list qux/1 modulepath-opt/1] [list $modpath.3/qux/1 $mp/modulepath-opt/1] |
| 129 | +setenv_var __MODULES_LMPREREQ qux/1&qux/1|foo/1.0:modulepath-opt/1&qux/1 |
| 130 | + |
| 131 | +# qux/1 is reloaded from mp4 as it is the enabled modulepath |
| 132 | +set tserr [msg_load modulepath-opt/1 [err_reqmis_path qux/1]]\n\n[msg_load foo/1.0 [err_depre modulepath-opt/1]] |
| 133 | +testouterr_cmd sh {load --auto foo/1.0} ERR $tserr |
| 134 | + |
| 135 | +setenv_var MODULEPATH $mp:$modpath.3 |
| 136 | +# qux/1 is reloaded from mp4 as it is the priority enabled modulepath |
| 137 | +testouterr_cmd sh {load --auto foo/1.0} ERR $tserr |
| 138 | + |
| 139 | +# qux/1 is reloaded from mp3 as it is the priority enabled modulepath |
| 140 | +setenv_var MODULEPATH $modpath.3:$mp |
| 141 | +set ans [list] |
| 142 | +lappend ans [list set __MODULES_LMPREREQ qux/1&qux/1|foo/1.0:modulepath-opt/1&qux/1] |
| 143 | +lappend ans [list set _LMFILES_ $modpath.3/foo/1.0:$modpath.3/qux/1:$mp/modulepath-opt/1] |
| 144 | +lappend ans [list set LOADEDMODULES foo/1.0:qux/1:modulepath-opt/1] |
| 145 | +set tserr [msg_top_load foo/1.0 {} {} {qux/1 modulepath-opt/1}] |
| 146 | +testouterr_cmd sh {load --auto foo/1.0} $ans $tserr |
| 147 | +setenv_var MODULEPATH $mp |
| 148 | + |
| 149 | + |
| 150 | +# |
| 151 | +# Cleanup |
| 152 | +# |
| 153 | + |
| 154 | +reset_test_env |
0 commit comments