Skip to content

Commit e1eda1b

Browse files
committed
ts: add modulepath-specific prereq loaded tests in 50/641
1 parent 5dd29ef commit e1eda1b

File tree

4 files changed

+179
-0
lines changed

4 files changed

+179
-0
lines changed

testsuite/modulefiles.3/qux/1

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,11 @@
11
#%Module
2+
if {[info exists env(TESTSUITE_MODULEPATH_OPT)]} {
3+
switch -- $env(TESTSUITE_MODULEPATH_OPT) {
4+
loaded_from_other_dir_variant {
5+
variant foo val1 val2 val3
6+
}
7+
depre_trigger {
8+
prereq --optional foo/1.0
9+
}
10+
}
11+
}

testsuite/modulefiles.4/modulepath-opt/1

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,5 +102,14 @@ if {[info exists env(TESTSUITE_MODULEPATH_OPT)]} {
102102
cyclic_reqlo2 {
103103
prereq --modulepath $env(TESTSUITEDIR)/modulefiles.3 qux/1
104104
}
105+
loaded_from_other_dir - loaded_after_from_other_dir - depre_trigger {
106+
prereq --modulepath $env(TESTSUITEDIR)/modulefiles.3 qux/1
107+
}
108+
loaded_from_other_dir_variant {
109+
prereq --modulepath $env(TESTSUITEDIR)/modulefiles.3 qux/1 foo=val1
110+
}
111+
loaded_after_from_correct_dir {
112+
prereq --modulepath $env(TESTSUITEDIR)/modulefiles.4 qux/1
113+
}
105114
}
106115
}

testsuite/modulefiles.4/qux/1

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,11 @@ if {[info exists env(TESTSUITE_MODULEPATH_OPT)]} {
1212
module load modulepath-opt/1
1313
break
1414
}
15+
loaded_from_other_dir_variant {
16+
variant foo val1 val2 val3
17+
}
18+
depre_trigger {
19+
prereq --optional foo/1.0
20+
}
1521
}
1622
}
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
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

Comments
 (0)