mirror of
https://github.com/envmodules/modules.git
synced 2026-05-30 00:12:31 +08:00
500 lines
19 KiB
Plaintext
500 lines
19 KiB
Plaintext
##############################################################################
|
|
# Modules Revision 3.0
|
|
# Providing a flexible user environment
|
|
#
|
|
# File: modules.50-cmds/%M%
|
|
# Revision: %I%
|
|
# First Edition: 2020/10/19
|
|
# Last Mod.: %U%, %G%
|
|
#
|
|
# Authors: Xavier Delaruelle, xavier.delaruelle@cea.fr
|
|
#
|
|
# Description: Testuite testsequence
|
|
# Command:
|
|
# Modulefiles: impreq, foo, bar
|
|
# Sub-Command: load, unload, switch, reload, purge
|
|
#
|
|
# Comment: %C{
|
|
# Test implicit_requirement configuration disablement.
|
|
# }C%
|
|
#
|
|
##############################################################################
|
|
|
|
# ensure avail -t tests have implicit default enabled
|
|
setenv_var MODULES_IMPLICIT_DEFAULT 1
|
|
|
|
# ensure last matching element is returned when unloading modules
|
|
setenv_var MODULES_UNLOAD_MATCH_ORDER returnlast
|
|
|
|
# ensure auto symbolic versions are not set for these tests
|
|
setenv_var MODULES_ADVANCED_VERSION_SPEC 0
|
|
|
|
set mp $modpath.3
|
|
set mpre [regsub -all "\(\[.+?\]\)" $mp {\\\1}]
|
|
|
|
# setup specific environment
|
|
setenv_path_var MODULEPATH $mp
|
|
|
|
|
|
#
|
|
# module load test
|
|
#
|
|
|
|
set ans1 [list]
|
|
lappend ans1 [list set __MODULES_LMPREREQ impreq/load&foo]
|
|
lappend ans1 [list set _LMFILES_ $mp/foo/2.0:$mp/impreq/load]
|
|
lappend ans1 [list set LOADEDMODULES foo/2.0:impreq/load]
|
|
lappend ans1 [list set __MODULES_LMTAG foo/2.0&auto-loaded]
|
|
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/2.0:$mp/impreq/load]
|
|
lappend ans0 [list set LOADEDMODULES foo/2.0:impreq/load]
|
|
lappend ans0 [list set __MODULES_LMTAG foo/2.0&auto-loaded]
|
|
|
|
set tserr [msg_top_load impreq/load {} foo/2.0 {}]
|
|
|
|
# test default implicit_requirement configuration
|
|
unsetenv_var MODULES_IMPLICIT_REQUIREMENT
|
|
if {$install_implicitrequirement eq {y}} {
|
|
testouterr_cmd_re sh {load impreq/load} $ans1 $tserr
|
|
} else {
|
|
testouterr_cmd_re sh {load impreq/load} $ans0 $tserr
|
|
}
|
|
|
|
skip_if_quick_mode
|
|
|
|
# option enabled
|
|
setenv_var MODULES_IMPLICIT_REQUIREMENT 1
|
|
testouterr_cmd_re sh {load impreq/load} $ans1 $tserr
|
|
# option disabled
|
|
setenv_var MODULES_IMPLICIT_REQUIREMENT 0
|
|
testouterr_cmd_re sh {load impreq/load} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --no-auto impreq/load} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --auto impreq/load} $ans0 $tserr
|
|
|
|
# module to load already loaded
|
|
setenv_loaded_module [list foo/2.0] [list $mp/foo/2.0]
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/2.0:$mp/impreq/load]
|
|
lappend ans0 [list set LOADEDMODULES foo/2.0:impreq/load]
|
|
set tserr {}
|
|
testouterr_cmd_re sh {load --no-auto impreq/load} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --auto impreq/load} $ans0 $tserr
|
|
unsetenv_loaded_module
|
|
|
|
# multiple load on single command
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/2.0:$mp/bar/2.0:$mp/impreq/loadmul]
|
|
lappend ans0 [list set LOADEDMODULES foo/2.0:bar/2.0:impreq/loadmul]
|
|
lappend ans0 [list set __MODULES_LMTAG foo/2.0&auto-loaded:bar/2.0&auto-loaded]
|
|
set tserr [msg_top_load impreq/loadmul {} [list foo/2.0 bar/2.0] {}]
|
|
testouterr_cmd_re sh {load --no-auto impreq/loadmul} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --auto impreq/loadmul} $ans0 $tserr
|
|
|
|
# unloading tests
|
|
setenv_loaded_module [list foo/2.0 impreq/load] [list $mp/foo/2.0 $mp/impreq/load] [list foo/2.0]
|
|
|
|
# UReqUn
|
|
set tserr [msg_top_unload impreq/load {} foo/2.0 {}]
|
|
set ans0 [list]
|
|
lappend ans0 [list unset _LMFILES_]
|
|
lappend ans0 [list unset LOADEDMODULES]
|
|
lappend ans0 [list unset __MODULES_LMTAG]
|
|
testouterr_cmd_re sh {unload --auto impreq/load} $ans0 $tserr
|
|
testouterr_cmd_re sh {unload --no-auto impreq/load} $ans0 $tserr
|
|
|
|
# no auto-loaded flag, no unload
|
|
unsetenv_var __MODULES_LMTAG
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/2.0]
|
|
lappend ans0 [list set LOADEDMODULES foo/2.0]
|
|
set tserr {}
|
|
testouterr_cmd_re sh {unload --auto impreq/load} $ans0 $tserr
|
|
testouterr_cmd_re sh {unload --no-auto impreq/load} $ans0 $tserr
|
|
|
|
# DepUn (not triggered as requirement not recorded)
|
|
setenv_var __MODULES_LMTAG foo/2.0&auto-loaded
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/impreq/load]
|
|
lappend ans0 [list set LOADEDMODULES impreq/load]
|
|
lappend ans0 [list unset __MODULES_LMTAG]
|
|
set tserr {}
|
|
testouterr_cmd_re sh {unload foo/2.0} $ans0 $tserr
|
|
|
|
# multiple load on single command
|
|
setenv_loaded_module [list foo/2.0 bar/2.0 impreq/loadmul] [list $mp/foo/2.0 $mp/bar/2.0 $mp/impreq/loadmul] [list foo/2.0 bar/2.0]
|
|
set tserr [msg_top_unload impreq/loadmul {} [list bar/2.0 foo/2.0] {}]
|
|
set ans0 [list]
|
|
lappend ans0 [list unset _LMFILES_]
|
|
lappend ans0 [list unset LOADEDMODULES]
|
|
lappend ans0 [list unset __MODULES_LMTAG]
|
|
testouterr_cmd_re sh {unload --auto impreq/loadmul} $ans0 $tserr
|
|
testouterr_cmd_re sh {unload --no-auto impreq/loadmul} $ans0 $tserr
|
|
|
|
unsetenv_loaded_module
|
|
unsetenv_var __MODULES_LMTAG
|
|
|
|
|
|
#
|
|
# module unload tests
|
|
#
|
|
|
|
set ans1 [list]
|
|
lappend ans1 [list set __MODULES_LMCONFLICT impreq/unload&foo]
|
|
lappend ans1 [list set _LMFILES_ $mp/impreq/unload]
|
|
lappend ans1 [list set LOADEDMODULES impreq/unload]
|
|
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/impreq/unload]
|
|
lappend ans0 [list set LOADEDMODULES impreq/unload]
|
|
|
|
set tserr {}
|
|
|
|
# test default implicit_requirement configuration
|
|
unsetenv_var MODULES_IMPLICIT_REQUIREMENT
|
|
if {$install_implicitrequirement eq {y}} {
|
|
testouterr_cmd_re sh {load impreq/unload} $ans1 $tserr
|
|
} else {
|
|
testouterr_cmd_re sh {load impreq/unload} $ans0 $tserr
|
|
}
|
|
# option enabled
|
|
setenv_var MODULES_IMPLICIT_REQUIREMENT 1
|
|
testouterr_cmd_re sh {load impreq/unload} $ans1 $tserr
|
|
# option disabled
|
|
setenv_var MODULES_IMPLICIT_REQUIREMENT 0
|
|
testouterr_cmd_re sh {load impreq/unload} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --auto impreq/unload} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --no-auto impreq/unload} $ans0 $tserr
|
|
|
|
# with module to unload loaded
|
|
setenv_loaded_module [list foo/2.0] [list $mp/foo/2.0]
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/impreq/unload]
|
|
lappend ans0 [list set LOADEDMODULES impreq/unload]
|
|
set tserr [msg_top_load impreq/unload [list foo/2.0] {} {}]
|
|
testouterr_cmd_re sh {load --auto impreq/unload} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --no-auto impreq/unload} $ans0 $tserr
|
|
|
|
# multiple unload on same command
|
|
unsetenv_loaded_module
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/impreq/unloadmul]
|
|
lappend ans0 [list set LOADEDMODULES impreq/unloadmul]
|
|
set tserr {}
|
|
testouterr_cmd_re sh {load --no-auto impreq/unloadmul} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --auto impreq/unloadmul} $ans0 $tserr
|
|
|
|
# with module to unload loaded
|
|
setenv_loaded_module [list foo/2.0 bar/2.0] [list $mp/foo/2.0 $mp/bar/2.0]
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/impreq/unloadmul]
|
|
lappend ans0 [list set LOADEDMODULES impreq/unloadmul]
|
|
set tserr [msg_top_load impreq/unloadmul [list foo/2.0 bar/2.0] {} {}]
|
|
testouterr_cmd_re sh {load --auto impreq/unloadmul} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --no-auto impreq/unloadmul} $ans0 $tserr
|
|
unsetenv_loaded_module
|
|
|
|
|
|
#
|
|
# module switch tests
|
|
#
|
|
|
|
# 1-arg form
|
|
set ans1 [list]
|
|
lappend ans1 [list set __MODULES_LMPREREQ impreq/switch1&foo/2.0]
|
|
lappend ans1 [list set _LMFILES_ $mp/foo/2.0:$mp/impreq/switch1]
|
|
lappend ans1 [list set LOADEDMODULES foo/2.0:impreq/switch1]
|
|
lappend ans1 [list set __MODULES_LMTAG foo/2.0&auto-loaded]
|
|
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/2.0:$mp/impreq/switch1]
|
|
lappend ans0 [list set LOADEDMODULES foo/2.0:impreq/switch1]
|
|
lappend ans0 [list set __MODULES_LMTAG foo/2.0&auto-loaded]
|
|
|
|
set tserr [msg_top_load impreq/switch1 {} foo/2.0 {}]
|
|
|
|
# test default implicit_requirement configuration
|
|
unsetenv_var MODULES_IMPLICIT_REQUIREMENT
|
|
if {$install_implicitrequirement eq {y}} {
|
|
testouterr_cmd_re sh {load impreq/switch1} $ans1 $tserr
|
|
} else {
|
|
testouterr_cmd_re sh {load impreq/switch1} $ans0 $tserr
|
|
}
|
|
# option enabled
|
|
setenv_var MODULES_IMPLICIT_REQUIREMENT 1
|
|
testouterr_cmd_re sh {load impreq/switch1} $ans1 $tserr
|
|
# option disabled
|
|
setenv_var MODULES_IMPLICIT_REQUIREMENT 0
|
|
testouterr_cmd_re sh {load impreq/switch1} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --auto impreq/switch1} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --no-auto impreq/switch1} $ans0 $tserr
|
|
|
|
# with module to unload loaded
|
|
setenv_loaded_module [list foo/1.0] [list $mp/foo/1.0]
|
|
set tserr [msg_top_load impreq/switch1 foo/1.0 foo/2.0 {}]
|
|
testouterr_cmd_re sh {load --auto impreq/switch1} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --no-auto impreq/switch1} $ans0 $tserr
|
|
unsetenv_loaded_module
|
|
|
|
# with module to load loaded
|
|
setenv_loaded_module [list foo/2.0] [list $mp/foo/2.0]
|
|
set tserr [msg_top_load impreq/switch1 foo/2.0 foo/2.0 {}]
|
|
testouterr_cmd_re sh {load --auto impreq/switch1} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --no-auto impreq/switch1} $ans0 $tserr
|
|
unsetenv_loaded_module
|
|
|
|
# 2-args form
|
|
set ans1 [list]
|
|
lappend ans1 [list set __MODULES_LMCONFLICT impreq/switch2&bar]
|
|
lappend ans1 [list set __MODULES_LMPREREQ impreq/switch2&foo/2.0]
|
|
lappend ans1 [list set _LMFILES_ $mp/foo/2.0:$mp/impreq/switch2]
|
|
lappend ans1 [list set LOADEDMODULES foo/2.0:impreq/switch2]
|
|
lappend ans1 [list set __MODULES_LMTAG foo/2.0&auto-loaded]
|
|
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/2.0:$mp/impreq/switch2]
|
|
lappend ans0 [list set LOADEDMODULES foo/2.0:impreq/switch2]
|
|
lappend ans0 [list set __MODULES_LMTAG foo/2.0&auto-loaded]
|
|
|
|
set tserr [msg_top_load impreq/switch2 {} foo/2.0 {}]
|
|
|
|
# test default implicit_requirement configuration
|
|
unsetenv_var MODULES_IMPLICIT_REQUIREMENT
|
|
if {$install_implicitrequirement eq {y}} {
|
|
testouterr_cmd_re sh {load impreq/switch2} $ans1 $tserr
|
|
} else {
|
|
testouterr_cmd_re sh {load impreq/switch2} $ans0 $tserr
|
|
}
|
|
# option enabled
|
|
setenv_var MODULES_IMPLICIT_REQUIREMENT 1
|
|
testouterr_cmd_re sh {load impreq/switch2} $ans1 $tserr
|
|
# option disabled
|
|
setenv_var MODULES_IMPLICIT_REQUIREMENT 0
|
|
testouterr_cmd_re sh {load impreq/switch2} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --auto impreq/switch2} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --no-auto impreq/switch2} $ans0 $tserr
|
|
|
|
# with module to unload loaded
|
|
setenv_loaded_module [list bar/1.0] [list $mp/bar/1.0]
|
|
set tserr [msg_top_load impreq/switch2 bar/1.0 foo/2.0 {}]
|
|
testouterr_cmd_re sh {load --auto impreq/switch2} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --no-auto impreq/switch2} $ans0 $tserr
|
|
unsetenv_loaded_module
|
|
|
|
# unloading tests
|
|
setenv_loaded_module [list foo/2.0 impreq/switch2] [list $mp/foo/2.0 $mp/impreq/switch2] [list foo/2.0]
|
|
set tserr [msg_top_unload impreq/switch2 {} foo/2.0 {}]
|
|
set ans0 [list]
|
|
lappend ans0 [list unset _LMFILES_]
|
|
lappend ans0 [list unset LOADEDMODULES]
|
|
lappend ans0 [list unset __MODULES_LMTAG]
|
|
testouterr_cmd_re sh {unload --auto impreq/switch2} $ans0 $tserr
|
|
testouterr_cmd_re sh {unload --no-auto impreq/switch2} $ans0 $tserr
|
|
unsetenv_loaded_module
|
|
unsetenv_var __MODULES_LMTAG
|
|
|
|
|
|
#
|
|
# mix
|
|
#
|
|
|
|
setenv_loaded_module [list bar/2.0] [list $mp/bar/2.0]
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/2.0:$mp/baz/2.0:$mp/impreq/mix]
|
|
lappend ans0 [list set LOADEDMODULES foo/2.0:baz/2.0:impreq/mix]
|
|
lappend ans0 [list set __MODULES_LMTAG foo/2.0&auto-loaded:baz/2.0&auto-loaded]
|
|
set tserr [msg_top_load impreq/mix bar/2.0 {} {} {Loading requirement: foo/2.0 baz/2.0}]
|
|
testouterr_cmd_re sh {load --no-auto impreq/mix} $ans0 $tserr
|
|
unsetenv_loaded_module
|
|
|
|
|
|
#
|
|
# loaded or unloaded modules themselves load or unload modules
|
|
#
|
|
|
|
set ans0 [list]
|
|
lappend ans0 [list set __MODULES_LMPREREQ foo/0.prereq&foo/1.0]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/1.0:$mp/foo/0.prereq:$mp/impreq/loadsubp]
|
|
lappend ans0 [list set LOADEDMODULES foo/1.0:foo/0.prereq:impreq/loadsubp]
|
|
lappend ans0 [list set __MODULES_LMTAG foo/1.0&auto-loaded:foo/0.prereq&auto-loaded]
|
|
set tserr [msg_top_load impreq/loadsubp {} [list foo/1.0 foo/0.prereq] {}]
|
|
testouterr_cmd_re sh {load --auto impreq/loadsubp} $ans0 $tserr
|
|
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/1.0:$mp/foo/0.load:$mp/impreq/loadsubm]
|
|
lappend ans0 [list set LOADEDMODULES foo/1.0:foo/0.load:impreq/loadsubm]
|
|
lappend ans0 [list set __MODULES_LMTAG foo/1.0&auto-loaded:foo/0.load&auto-loaded]
|
|
set tserr [msg_top_load impreq/loadsubm {} [list foo/1.0 foo/0.load] {}]
|
|
testouterr_cmd_re sh {load --auto impreq/loadsubm} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --no-auto impreq/loadsubm} $ans0 $tserr
|
|
|
|
setenv_loaded_module [list foo/1.0 foo/0.prereq impreq/loadsubp] [list $mp/foo/1.0 $mp/foo/0.prereq $mp/impreq/loadsubp] [list foo/1.0 foo/0.prereq]
|
|
setenv_var __MODULES_LMPREREQ foo/0.prereq&foo/1.0
|
|
set tserr [msg_top_unload impreq/loadsubp {} [list foo/0.prereq foo/1.0] {}]
|
|
set ans0 [list]
|
|
lappend ans0 [list unset __MODULES_LMPREREQ]
|
|
lappend ans0 [list unset _LMFILES_]
|
|
lappend ans0 [list unset LOADEDMODULES]
|
|
lappend ans0 [list unset __MODULES_LMTAG]
|
|
testouterr_cmd_re sh {unload --auto impreq/loadsubp} $ans0 $tserr
|
|
|
|
setenv_loaded_module [list foo/1.0 foo/0.load impreq/loadsubm] [list $mp/foo/1.0 $mp/foo/0.load $mp/impreq/loadsubm] [list foo/1.0 foo/0.load]
|
|
unsetenv_var __MODULES_LMPREREQ
|
|
set tserr [msg_top_unload impreq/loadsubm {} [list foo/0.load foo/1.0] {}]
|
|
set ans0 [list]
|
|
lappend ans0 [list unset _LMFILES_]
|
|
lappend ans0 [list unset LOADEDMODULES]
|
|
lappend ans0 [list unset __MODULES_LMTAG]
|
|
testouterr_cmd_re sh {unload --no-auto impreq/loadsubm} $ans0 $tserr
|
|
|
|
setenv_loaded_module [list foo/1.0 foo/0.prereq] [list $mp/foo/1.0 $mp/foo/0.prereq] [list foo/1.0]
|
|
setenv_var __MODULES_LMPREREQ foo/0.prereq&foo/1.0
|
|
# auto-loaded requirement of foo/0.prereq is not auto unloaded when foo/0.prereq is
|
|
# unloaded by impreq/unload load
|
|
set ans0 [list]
|
|
lappend ans0 [list unset __MODULES_LMPREREQ]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/1.0:$mp/impreq/unload]
|
|
lappend ans0 [list set LOADEDMODULES foo/1.0:impreq/unload]
|
|
set tserr [msg_top_load impreq/unload foo/0.prereq {} {}]
|
|
testouterr_cmd_re sh {load --auto impreq/unload} $ans0 $tserr
|
|
unsetenv_loaded_module
|
|
unsetenv_var __MODULES_LMTAG
|
|
unsetenv_var __MODULES_LMPREREQ
|
|
|
|
set ans0 [list]
|
|
lappend ans0 [list set __MODULES_LMPREREQ foo/0.prereq&foo/1.0]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/1.0:$mp/foo/0.prereq:$mp/impreq/switchsubp]
|
|
lappend ans0 [list set LOADEDMODULES foo/1.0:foo/0.prereq:impreq/switchsubp]
|
|
lappend ans0 [list set __MODULES_LMTAG foo/1.0&auto-loaded:foo/0.prereq&auto-loaded]
|
|
set tserr [msg_top_load impreq/switchsubp {} [list foo/1.0 foo/0.prereq] {}]
|
|
testouterr_cmd_re sh {load --auto impreq/switchsubp} $ans0 $tserr
|
|
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/1.0:$mp/foo/0.load:$mp/impreq/switchsubm]
|
|
lappend ans0 [list set LOADEDMODULES foo/1.0:foo/0.load:impreq/switchsubm]
|
|
lappend ans0 [list set __MODULES_LMTAG foo/1.0&auto-loaded:foo/0.load&auto-loaded]
|
|
set tserr [msg_top_load impreq/switchsubm {} [list foo/1.0 foo/0.load] {}]
|
|
testouterr_cmd_re sh {load --auto impreq/switchsubm} $ans0 $tserr
|
|
testouterr_cmd_re sh {load --no-auto impreq/switchsubm} $ans0 $tserr
|
|
|
|
setenv_loaded_module [list foo/1.0 foo/0.prereq impreq/switchsubp] [list $mp/foo/1.0 $mp/foo/0.prereq $mp/impreq/switchsubp] [list foo/1.0 foo/0.prereq]
|
|
setenv_var __MODULES_LMPREREQ foo/0.prereq&foo/1.0
|
|
set ans0 [list]
|
|
lappend ans0 [list unset __MODULES_LMPREREQ]
|
|
lappend ans0 [list unset _LMFILES_]
|
|
lappend ans0 [list unset LOADEDMODULES]
|
|
lappend ans0 [list unset __MODULES_LMTAG]
|
|
set tserr [msg_top_unload impreq/switchsubp {} [list foo/0.prereq foo/1.0] {}]
|
|
testouterr_cmd_re sh {unload --auto impreq/switchsubp} $ans0 $tserr
|
|
|
|
setenv_loaded_module [list foo/1.0 foo/0.load impreq/switchsubm] [list $mp/foo/1.0 $mp/foo/0.load $mp/impreq/switchsubm] [list foo/1.0 foo/0.load]
|
|
unsetenv_var __MODULES_LMPREREQ
|
|
set ans0 [list]
|
|
lappend ans0 [list unset _LMFILES_]
|
|
lappend ans0 [list unset LOADEDMODULES]
|
|
lappend ans0 [list unset __MODULES_LMTAG]
|
|
set tserr [msg_top_unload impreq/switchsubm {} [list foo/0.load foo/1.0] {}]
|
|
testouterr_cmd_re sh {unload --no-auto impreq/switchsubm} $ans0 $tserr
|
|
unsetenv_loaded_module
|
|
unsetenv_var __MODULES_LMTAG
|
|
|
|
|
|
#
|
|
# loaded or unloaded modules do not exist or have error
|
|
#
|
|
|
|
set tserr [msg_load foo/0.err [msg_moderr {invalid command name "foo"} foo $mp/foo/0.err 2]]\n\n[msg_load impreq/loaderr [err_reqlo foo/0.err]]
|
|
testouterr_cmd sh {load --no-auto impreq/loaderr} ERR $tserr
|
|
|
|
setenv_loaded_module [list foo/0.err] [list $mp/foo/0.err]
|
|
set tserr [msg_unload foo/0.err [msg_moderr {invalid command name "foo"} foo $mp/foo/0.err 2]]\n\n[msg_load impreq/unloaderr [err_conun foo/0.err]]
|
|
testouterr_cmd sh {load --no-auto impreq/unloaderr} ERR $tserr
|
|
|
|
unsetenv_loaded_module
|
|
set tserr [msg_load foo/0.err [msg_moderr {invalid command name "foo"} foo $mp/foo/0.err 2]]\n\n[msg_load impreq/switch1err [err_reqlo foo/0.err]]
|
|
testouterr_cmd sh {load --no-auto impreq/switch1err} ERR $tserr
|
|
|
|
set tserr [msg_load impreq/loadunk [err_unablelocate foo/0.unk] [err_reqlo foo/0.unk]]
|
|
testouterr_cmd sh {load --no-auto impreq/loadunk} ERR $tserr
|
|
|
|
set tserr [msg_load impreq/switch1unk [err_unablelocate foo/0.unk] [err_reqlo foo/0.unk]]
|
|
testouterr_cmd sh {load --no-auto impreq/switch1unk} ERR $tserr
|
|
|
|
|
|
#
|
|
# purge/reload/restore
|
|
#
|
|
|
|
setenv_loaded_module [list foo/1.0 foo/0.load impreq/loadsubm foo/2.0 impreq/switch2] [list $mp/foo/1.0 $mp/foo/0.load $mp/impreq/loadsubm $mp/foo/2.0 $mp/impreq/switch2] [list foo/1.0 foo/0.load foo/2.0]
|
|
|
|
set ans0 [list]
|
|
lappend ans0 [list unset _LMFILES_]
|
|
lappend ans0 [list unset LOADEDMODULES]
|
|
lappend ans0 [list unset __MODULES_LMTAG]
|
|
set tserr {}
|
|
testouterr_cmd_re sh {purge} $ans0 $tserr
|
|
|
|
set ans0 [list]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/1.0:$mp/foo/0.load:$mp/impreq/loadsubm:$mp/foo/2.0:$mp/impreq/switch2]
|
|
lappend ans0 [list set LOADEDMODULES foo/1.0:foo/0.load:impreq/loadsubm:foo/2.0:impreq/switch2]
|
|
lappend ans0 [list set __MODULES_LMTAG foo/1.0&auto-loaded:foo/0.load&auto-loaded:foo/2.0&auto-loaded]
|
|
testouterr_cmd_re sh {reload} $ans0 $tserr
|
|
|
|
testouterr_cmd_re sh {save ./testcoll} OK {}
|
|
|
|
unsetenv_var __MODULES_LMTAG
|
|
unsetenv_loaded_module
|
|
|
|
set tserr [msg_load {foo/1.0 <aL>}]\n[msg_load {foo/0.load <aL>}]\n[msg_load impreq/loadsubm]\n[msg_load {foo/2.0 <aL>}]\n[msg_load impreq/switch2]
|
|
testouterr_cmd_re sh {restore ./testcoll} $ans0 $tserr
|
|
|
|
file delete ./testcoll
|
|
|
|
|
|
#
|
|
# module with implicit requirement dependency of another module
|
|
#
|
|
|
|
# ReqLo
|
|
set ans0 [list]
|
|
lappend ans0 [list set __MODULES_LMPREREQ impreq/prereq&impreq/load]
|
|
lappend ans0 [list set _LMFILES_ $mp/foo/2.0:$mp/impreq/load:$mp/impreq/prereq]
|
|
lappend ans0 [list set LOADEDMODULES foo/2.0:impreq/load:impreq/prereq]
|
|
lappend ans0 [list set __MODULES_LMTAG foo/2.0&auto-loaded:impreq/load&auto-loaded]
|
|
set tserr [msg_top_load impreq/prereq {} [list foo/2.0 impreq/load] {}]
|
|
testouterr_cmd_re sh {load --auto impreq/prereq} $ans0 $tserr
|
|
|
|
# UreqUn
|
|
setenv_loaded_module [list foo/2.0 impreq/load impreq/prereq] [list $mp/foo/2.0 $mp/impreq/load $mp/impreq/prereq] [list foo/2.0 impreq/load]
|
|
setenv_var __MODULES_LMPREREQ impreq/prereq&impreq/load
|
|
set ans0 [list]
|
|
lappend ans0 [list unset __MODULES_LMPREREQ]
|
|
lappend ans0 [list unset _LMFILES_]
|
|
lappend ans0 [list unset LOADEDMODULES]
|
|
lappend ans0 [list unset __MODULES_LMTAG]
|
|
set tserr [msg_top_unload impreq/prereq {} [list impreq/load foo/2.0] {}]
|
|
testouterr_cmd_re sh {unload --auto impreq/prereq} $ans0 $tserr
|
|
|
|
# DepUn
|
|
set ans0 [list]
|
|
lappend ans0 [list unset __MODULES_LMPREREQ]
|
|
lappend ans0 [list unset _LMFILES_]
|
|
lappend ans0 [list unset LOADEDMODULES]
|
|
lappend ans0 [list unset __MODULES_LMTAG]
|
|
set tserr [msg_top_unload {impreq/load <aL>} impreq/prereq foo/2.0 {}]
|
|
testouterr_cmd_re sh {unload --auto impreq/load} $ans0 $tserr
|
|
|
|
# DepRe
|
|
# no common use case to sketch
|
|
|
|
unsetenv_var __MODULES_LMPREREQ
|
|
unsetenv_var __MODULES_LMTAG
|
|
unsetenv_loaded_module
|
|
|
|
|
|
#
|
|
# Cleanup
|
|
#
|
|
|
|
reset_test_env
|