ts: add modulepath-constrained auto load tests

This commit is contained in:
Xavier Delaruelle
2024-04-14 15:54:06 +02:00
parent 817dacf4f7
commit 9ec65da51f
4 changed files with 159 additions and 2 deletions

View File

@@ -62,7 +62,7 @@ if {[info exists env(TESTSUITE_MODULEPATH_OPT)]} {
catch {module unload qux/1}
prereq --modulepath $env(TESTSUITEDIR)/modulefiles.4 qux/1
}
reqlo_multi1 {
reqlo_multi1 - reqlo_multi_break1 {
prereq --modulepath $env(TESTSUITEDIR)/modulefiles.4:$env(TESTSUITEDIR)/modulefiles.3 unk/1 qux/1
}
full_path1 {
@@ -92,5 +92,15 @@ if {[info exists env(TESTSUITE_MODULEPATH_OPT)]} {
glob_dir1 {
prereq --modulepath $env(TESTSUITEDIR)/modulefiles.* qux/1
}
reqlo_break1 - cyclic_reqlo1 - cyclic_reqlo_break1 {
prereq --modulepath $env(TESTSUITEDIR)/modulefiles.4:$env(TESTSUITEDIR)/modulefiles.3 qux/1
}
cyclic_reqlo_break2 {
prereq --modulepath $env(TESTSUITEDIR)/modulefiles.4:$env(TESTSUITEDIR)/modulefiles.3 qux/1
break
}
cyclic_reqlo2 {
prereq --modulepath $env(TESTSUITEDIR)/modulefiles.3 qux/1
}
}
}

View File

@@ -1,7 +1,15 @@
#%Module
if {[info exists env(TESTSUITE_MODULEPATH_OPT)]} {
switch -- $env(TESTSUITE_MODULEPATH_OPT) {
pre_reqlo_break1 - pre_reqlo_break2 - pre_conun_break1 - pre_conun_break2 {
pre_reqlo_break1 - pre_reqlo_break2 - pre_conun_break1 - pre_conun_break2 - reqlo_break1 -\
reqlo_multi_break1 {
break
}
cyclic_reqlo1 - cyclic_reqlo2 {
module load modulepath-opt/1
}
cyclic_reqlo_break1 - cyclic_reqlo_break2 {
module load modulepath-opt/1
break
}
}

View File

@@ -389,6 +389,7 @@ set err_superstickyunload "$::error_msgs: Unload of super-sticky module skipped"
set warn_superstickyunload "$::warn_msgs: Unload of super-sticky module skipped"
set err_reqfull "$::error_msgs: Module version must be specified to load module"
set err_nomodloaded "$error_msgs: $msg_nomodloaded"
set err_modfromdiffpathloaded "$error_msgs: Module already loaded from a different modulepath"
set err_save_emptyenv "$::error_msgs: Nothing to save in a collection"
set err_save_unsat "$::error_msgs: Cannot save collection, some module constraints are not satistied"
set warn_nostash "$::warn_msgs: No specific environment to save"

View File

@@ -156,6 +156,26 @@ lappend ans [list set LOADEDMODULES qux/1:modulepath-opt/1]
testouterr_cmd sh {load --no-auto modulepath-opt/1} $ans {}
#
# loading requirement
#
unsetenv_loaded_module
setenv_var TESTSUITE_MODULEPATH_OPT cyclic_reqlo1
set ans [list]
lappend ans [list set __MODULES_LMPREREQ modulepath-opt/1&qux/1:qux/1&modulepath-opt/1]
lappend ans [list set _LMFILES_ $mp/modulepath-opt/1:$mp/qux/1]
lappend ans [list set LOADEDMODULES modulepath-opt/1:qux/1]
lappend ans [list set __MODULES_LMTAG modulepath-opt/1&auto-loaded]
set tserr [msg_top_load qux/1 {} modulepath-opt/1 {}]
testouterr_cmd sh {load --no-auto qux/1} $ans $tserr
setenv_var TESTSUITE_MODULEPATH_OPT cyclic_reqlo2
set tserr [msg_load modulepath-opt/1 [err_prereq_path qux/1]]\n\n[msg_load qux/1 [err_reqlo modulepath-opt/1]]
testouterr_cmd sh {load --no-auto qux/1} ERR $tserr
#
# matching module found in specified path
#
@@ -323,6 +343,124 @@ set tserr [msg_load modulepath-opt/1 [err_prereq_path qux/1]]
testouterr_cmd sh {load --no-auto modulepath-opt/1} ERR $tserr
#
# auto load modulepath-constrained requirement
#
unsetenv_loaded_module
setenv_var TESTSUITE_MODULEPATH_OPT dir1
set tserr [msg_load modulepath-opt/1 $err_path'qux/1' [err_prereq_path qux/1]]
testouterr_cmd sh {load --auto modulepath-opt/1} ERR $tserr
setenv_var TESTSUITE_MODULEPATH_OPT dir2
set ans [list]
lappend ans [list set __MODULES_LMPREREQ modulepath-opt/1&qux/1]
lappend ans [list set _LMFILES_ $modpath.3/qux/1:$mp/modulepath-opt/1]
lappend ans [list set LOADEDMODULES qux/1:modulepath-opt/1]
lappend ans [list set __MODULES_LMTAG qux/1&auto-loaded]
set tserr [msg_top_load modulepath-opt/1 {} qux/1 {}]
testouterr_cmd sh {load --auto modulepath-opt/1} $ans $tserr
setenv_path_var MODULEPATH $modpath.3:$mp
testouterr_cmd sh {load --auto modulepath-opt/1} $ans $tserr
setenv_path_var MODULEPATH $mp:$modpath.3
testouterr_cmd sh {load --auto modulepath-opt/1} $ans $tserr
setenv_path_var MODULEPATH $mp
setenv_var TESTSUITE_MODULEPATH_OPT dir4
testouterr_cmd sh {load --auto modulepath-opt/1} $ans $tserr
setenv_var TESTSUITE_MODULEPATH_OPT dir6
set tserr [msg_load modulepath-opt/1 $err_path'qux/1' [err_prereq_path qux/1]]
testouterr_cmd sh {load --auto modulepath-opt/1} ERR $tserr
setenv_var TESTSUITE_MODULEPATH_OPT dir7
set ans [list]
lappend ans [list set __MODULES_LMPREREQ modulepath-opt/1&qux/1]
lappend ans [list set _LMFILES_ $mp/qux/1:$mp/modulepath-opt/1]
lappend ans [list set LOADEDMODULES qux/1:modulepath-opt/1]
lappend ans [list set __MODULES_LMTAG qux/1&auto-loaded]
set tserr [msg_top_load modulepath-opt/1 {} qux/1 {}]
testouterr_cmd sh {load --auto modulepath-opt/1} $ans $tserr
setenv_path_var MODULEPATH $modpath.3:$mp
set ans [list]
lappend ans [list set __MODULES_LMPREREQ modulepath-opt/1&qux/1]
lappend ans [list set _LMFILES_ $modpath.3/qux/1:$mp/modulepath-opt/1]
lappend ans [list set LOADEDMODULES qux/1:modulepath-opt/1]
lappend ans [list set __MODULES_LMTAG qux/1&auto-loaded]
set tserr [msg_top_load modulepath-opt/1 {} qux/1 {}]
testouterr_cmd sh {load --auto modulepath-opt/1} $ans $tserr
setenv_path_var MODULEPATH $mp
setenv_var TESTSUITE_MODULEPATH_OPT dir8
set tserr [msg_load modulepath-opt/1 $err_path'qux/1' [err_prereq_path qux/1]]
testouterr_cmd sh {load --auto modulepath-opt/1} ERR $tserr
setenv_var TESTSUITE_MODULEPATH_OPT glob_dir1
set tserr [msg_load modulepath-opt/1 $err_path'qux/1' [err_prereq_path qux/1]]
testouterr_cmd sh {load --auto modulepath-opt/1} ERR $tserr
setenv_var TESTSUITE_MODULEPATH_OPT reqlo_break1
set tserr [msg_load qux/1 $err_evalabort]\n\n[msg_load modulepath-opt/1 [err_reqlo_path qux/1]]
testouterr_cmd sh {load --auto modulepath-opt/1} ERR $tserr
setenv_var TESTSUITE_MODULEPATH_OPT reqlo_multi1
set ans [list]
lappend ans [list set __MODULES_LMPREREQ modulepath-opt/1&unk/1|qux/1]
lappend ans [list set _LMFILES_ $mp/qux/1:$mp/modulepath-opt/1]
lappend ans [list set LOADEDMODULES qux/1:modulepath-opt/1]
lappend ans [list set __MODULES_LMTAG qux/1&auto-loaded]
set tserr [msg_top_load modulepath-opt/1 {} qux/1 {}]
testouterr_cmd sh {load --auto modulepath-opt/1} $ans $tserr
setenv_var TESTSUITE_MODULEPATH_OPT reqlo_multi_break1
set tserr [msg_load qux/1 $err_evalabort]\n\n[msg_load modulepath-opt/1 $err_path'unk/1' [err_reqlo_path unk/1 qux/1]]
testouterr_cmd sh {load --auto modulepath-opt/1} ERR $tserr
setenv_var TESTSUITE_MODULEPATH_OPT cyclic_reqlo1
set ans [list]
lappend ans [list set __MODULES_LMPREREQ modulepath-opt/1&qux/1:qux/1&modulepath-opt/1]
lappend ans [list set _LMFILES_ $mp/modulepath-opt/1:$mp/qux/1]
lappend ans [list set LOADEDMODULES modulepath-opt/1:qux/1]
lappend ans [list set __MODULES_LMTAG modulepath-opt/1&auto-loaded]
set tserr [msg_top_load qux/1 {} modulepath-opt/1 {}]
testouterr_cmd sh {load --auto qux/1} $ans $tserr
setenv_var TESTSUITE_MODULEPATH_OPT cyclic_reqlo_break1
set tserr [msg_load qux/1 $err_evalabort]
testouterr_cmd sh {load --auto qux/1} ERR $tserr
setenv_var TESTSUITE_MODULEPATH_OPT cyclic_reqlo_break2
set tserr [msg_load modulepath-opt/1 $err_evalabort]\n\n[msg_load qux/1 [err_reqlo modulepath-opt/1]]
testouterr_cmd sh {load --auto qux/1} ERR $tserr
#
# auto load and already loaded/loading module
#
setenv_loaded_module [list qux/1] [list $mp/qux/1]
setenv_var TESTSUITE_MODULEPATH_OPT dir5
set ans [list]
lappend ans [list set __MODULES_LMPREREQ modulepath-opt/1&qux/1]
lappend ans [list set _LMFILES_ $mp/qux/1:$mp/modulepath-opt/1]
lappend ans [list set LOADEDMODULES qux/1:modulepath-opt/1]
testouterr_cmd sh {load --auto modulepath-opt/1} $ans {}
setenv_var TESTSUITE_MODULEPATH_OPT dir3
set tserr [msg_load qux/1 $err_modfromdiffpathloaded]\n\n[msg_load modulepath-opt/1 [err_reqlo_path qux/1]]
testouterr_cmd sh {load --auto modulepath-opt/1} ERR $tserr
unsetenv_loaded_module
setenv_var TESTSUITE_MODULEPATH_OPT cyclic_reqlo2
set tserr [msg_load qux/1 $err_modfromdiffpathloaded]\n\n[msg_load modulepath-opt/1 [err_reqlo_path qux/1]]\n\n[msg_load qux/1 [err_reqlo modulepath-opt/1]]
testouterr_cmd sh {load --auto qux/1} ERR $tserr
#
# Cleanup
#