@@ -165,6 +165,7 @@ testouterr_cmd "sh" "load $module" $ans ""
165165set module "append/4.0"
166166set modulefile "$modpath/$module"
167167
168+ setenv_var MODULES_PATH_ENTRY_REORDER 0
168169unsetenv_path_var FOO
169170set env(__MODULES_SHARE_BAR) "/path/to/dir1:2"
170171set env(BAR) "/path/to/dir1:/path/to/dir2:/path/to/dir1"
@@ -179,6 +180,22 @@ lappend ans [list set LOADEDMODULES $module]
179180
180181testouterr_cmd "sh" "load $module" $ans ""
181182
183+ setenv_var MODULES_PATH_ENTRY_REORDER 1
184+ unsetenv_path_var FOO
185+ set env(__MODULES_SHARE_BAR) "/path/to/dir1:2"
186+ set env(BAR) "/path/to/dir1:/path/to/dir2:/path/to/dir1"
187+
188+ set ans [list]
189+ lappend ans [list set __MODULES_SHARE_FOO "/path/to/dir1:2"]
190+ lappend ans [list set FOO "/path/to/dir1:/path/to/dir2:/path/to/dir1"]
191+ lappend ans [list set __MODULES_SHARE_BAR "/path/to/dir1:3"]
192+ lappend ans [list set BAR "/path/to/dir2:/path/to/dir1"]
193+ lappend ans [list set _LMFILES_ $modulefile]
194+ lappend ans [list set LOADEDMODULES $module]
195+
196+ testouterr_cmd "sh" "load $module" $ans ""
197+
198+ setenv_var MODULES_PATH_ENTRY_REORDER 0
182199set env(FOO) "/path/to/dir1"
183200
184201set ans [list]
@@ -191,6 +208,20 @@ lappend ans [list set LOADEDMODULES $module]
191208
192209testouterr_cmd "sh" "load $module" $ans ""
193210
211+ setenv_var MODULES_PATH_ENTRY_REORDER 1
212+ set env(FOO) "/path/to/dir1"
213+
214+ set ans [list]
215+ lappend ans [list set __MODULES_SHARE_FOO "/path/to/dir1:3"]
216+ lappend ans [list set FOO "/path/to/dir1:/path/to/dir1:/path/to/dir2:/path/to/dir1"]
217+ lappend ans [list set __MODULES_SHARE_BAR "/path/to/dir1:3"]
218+ lappend ans [list set BAR "/path/to/dir2:/path/to/dir1"]
219+ lappend ans [list set _LMFILES_ $modulefile]
220+ lappend ans [list set LOADEDMODULES $module]
221+
222+ testouterr_cmd "sh" "load $module" $ans ""
223+
224+ setenv_var MODULES_PATH_ENTRY_REORDER 0
194225set env(__MODULES_SHARE_FOO) "/path/to/dir1:2"
195226set env(FOO) "/path/to/dir1"
196227
@@ -204,6 +235,23 @@ lappend ans [list set LOADEDMODULES $module]
204235
205236testouterr_cmd "sh" "load $module" $ans ""
206237
238+ setenv_var MODULES_PATH_ENTRY_REORDER 1
239+ set env(__MODULES_SHARE_FOO) "/path/to/dir1:2"
240+ set env(FOO) "/path/to/dir1"
241+
242+ set ans [list]
243+ lappend ans [list set __MODULES_SHARE_FOO "/path/to/dir1:4"]
244+ lappend ans [list set FOO "/path/to/dir1:/path/to/dir1:/path/to/dir2:/path/to/dir1"]
245+ lappend ans [list set __MODULES_SHARE_BAR "/path/to/dir1:3"]
246+ lappend ans [list set BAR "/path/to/dir2:/path/to/dir1"]
247+ lappend ans [list set _LMFILES_ $modulefile]
248+ lappend ans [list set LOADEDMODULES $module]
249+
250+ testouterr_cmd "sh" "load $module" $ans ""
251+
252+ # reset to default config
253+ unset env(MODULES_PATH_ENTRY_REORDER)
254+
207255# test unload mode on append-path --duplicates
208256setenv_loaded_module [list $module] [list $modulefile]
209257set ans [list]
@@ -228,15 +276,16 @@ lappend ans [list unset _LMFILES_]
228276lappend ans [list unset LOADEDMODULES]
229277testouterr_cmd sh "unload $module" $ans {}
230278
279+ set module "append/4.1"
280+ set modulefile "$modpath/$module"
281+
282+ setenv_var MODULES_PATH_ENTRY_REORDER 0
231283setenv_var FOO /path/to/dir1
232284setenv_var __MODULES_SHARE_FOO /path/to/dir1:2
233285setenv_var BAR /path/to/dir1:/path/to/dir2:/path/to/dir1
234286setenv_var __MODULES_SHARE_BAR /path/to/dir1:2
235287unsetenv_loaded_module
236288
237- set module "append/4.1"
238- set modulefile "$modpath/$module"
239-
240289set ans [list]
241290lappend ans [list set __MODULES_SHARE_FOO "/path/to/dir1:4"]
242291lappend ans [list set FOO "/path/to/dir1:/path/to/dir1:/path/to/dir2:/path/to/dir1"]
@@ -247,6 +296,25 @@ lappend ans [list set LOADEDMODULES $module]
247296
248297testouterr_cmd "sh" "load $module" $ans [msg_load $module "$warn_msgs: --index option has no effect on append-path"]
249298
299+ setenv_var MODULES_PATH_ENTRY_REORDER 1
300+ setenv_var FOO /path/to/dir1
301+ setenv_var __MODULES_SHARE_FOO /path/to/dir1:2
302+ setenv_var BAR /path/to/dir1:/path/to/dir2:/path/to/dir1
303+ setenv_var __MODULES_SHARE_BAR /path/to/dir1:2
304+ unsetenv_loaded_module
305+
306+ set ans [list]
307+ lappend ans [list set __MODULES_SHARE_FOO "/path/to/dir1:4"]
308+ lappend ans [list set FOO "/path/to/dir1:/path/to/dir1:/path/to/dir2:/path/to/dir1"]
309+ lappend ans [list set __MODULES_SHARE_BAR "/path/to/dir1:3"]
310+ lappend ans [list set BAR "/path/to/dir2:/path/to/dir1"]
311+ lappend ans [list set _LMFILES_ $modulefile]
312+ lappend ans [list set LOADEDMODULES $module]
313+
314+ testouterr_cmd "sh" "load $module" $ans [msg_load $module "$warn_msgs: --index option has no effect on append-path"]
315+
316+ # reset to default config
317+ unset env(MODULES_PATH_ENTRY_REORDER)
250318
251319# test setting a large value in variable. For csh shell family, Modules
252320# truncates value to avoid going over csh limit (this should be changed in
@@ -297,6 +365,7 @@ testouterr_cmd_re "csh" "load $module" $ans $ts_err
297365set module "append/6.0"
298366set modulefile "$modpath/$module"
299367
368+ setenv_var MODULES_PATH_ENTRY_REORDER 0
300369set env(__MODULES_SHARE_FOO) "/path/to/dir3:2"
301370set env(FOO) "/path/to/dir1:/path/to/dir4"
302371
@@ -309,6 +378,22 @@ lappend ans [list set LOADEDMODULES $module]
309378# reference counter is automatically adjusted
310379testouterr_cmd "sh" "load $module" $ans {}
311380
381+ setenv_var MODULES_PATH_ENTRY_REORDER 1
382+ set env(__MODULES_SHARE_FOO) "/path/to/dir3:2"
383+ set env(FOO) "/path/to/dir1:/path/to/dir4"
384+
385+ set ans [list]
386+ lappend ans [list set __MODULES_SHARE_FOO "/path/to/dir1:2"]
387+ lappend ans [list set FOO "/path/to/dir4:/path/to/dir1:/path/to/dir2"]
388+ lappend ans [list set _LMFILES_ $modulefile]
389+ lappend ans [list set LOADEDMODULES $module]
390+
391+ # reference counter is automatically adjusted
392+ testouterr_cmd "sh" "load $module" $ans {}
393+
394+ # reset to default config
395+ unset env(MODULES_PATH_ENTRY_REORDER)
396+
312397# test incoherent state on unload mode
313398setenv_loaded_module $module $modulefile
314399set ans [list]
@@ -400,13 +485,33 @@ lappend ans [list unset LOADEDMODULES]
400485testouterr_cmd "sh" "unload $module" $ans {}
401486
402487
488+ #
489+ # test that path entry is not removed if added twice and path_entry_reorder
490+ # is true
491+ #
492+ set module "append/2.0"
493+ set modulefile "$modpath.4/$module"
494+
495+ setenv_var MODULEPATH $modpath.4
496+ setenv_var MODULES_PATH_ENTRY_REORDER 1
497+ setenv_var FOO /test/dir2
498+ unsetenv_var __MODULES_SHARE_FOO
499+
500+ unsetenv_loaded_module
501+ set ans [list]
502+ lappend ans [list set __MODULES_SHARE_FOO "/test/dir2:2"]
503+ lappend ans [list set FOO "/test/dir1:/test/dir2:/test/dir3"]
504+ lappend ans [list set _LMFILES_ $modulefile]
505+ lappend ans [list set LOADEDMODULES $module]
506+
507+ testouterr_cmd "sh" "load $module" $ans ""
508+
403509#
404510# --glob option
405511#
406512
407513unsetenv_loaded_module
408514unsetenv_path_var FOO
409- setenv_var MODULEPATH $modpath.4
410515
411516set ans [list]
412517lappend ans [list set FOO /tmp*]
0 commit comments