mirror of
https://github.com/envmodules/modules.git
synced 2026-05-30 00:12:31 +08:00
ts: test load subcmd with error_on_multi_load config in 50/590
This commit is contained in:
@@ -1,3 +1,3 @@
|
||||
#%Module
|
||||
module-alias foo/alias foo/2.0
|
||||
module-alias foo/alias foo/4.0
|
||||
module-tag mytag foo/1.0
|
||||
|
||||
12
testsuite/modulefiles.4/all/1.0
Normal file
12
testsuite/modulefiles.4/all/1.0
Normal file
@@ -0,0 +1,12 @@
|
||||
#%Module
|
||||
module-whatis [module-info name]
|
||||
append-path TSPATH dir1
|
||||
setenv TS ok
|
||||
chdir /tmp
|
||||
set-alias alall value
|
||||
set-function funcall value
|
||||
complete bash compall value
|
||||
if {![module-info mode scan]} {
|
||||
puts stdout all-out
|
||||
puts prestdout all-pre-out
|
||||
}
|
||||
1
testsuite/modulefiles.4/all/2.0
Normal file
1
testsuite/modulefiles.4/all/2.0
Normal file
@@ -0,0 +1 @@
|
||||
#%Module
|
||||
8
testsuite/modulefiles.4/err/.modulerc
Normal file
8
testsuite/modulefiles.4/err/.modulerc
Normal file
@@ -0,0 +1,8 @@
|
||||
#%Module
|
||||
if {[info exists env(TESTSUITE_ERROR_ON_MULTI_LOAD)]} {
|
||||
switch -- $env(TESTSUITE_ERROR_ON_MULTI_LOAD) {
|
||||
forbidden - depre_load_forbidden {
|
||||
module-forbid err/1.0
|
||||
}
|
||||
}
|
||||
}
|
||||
74
testsuite/modulefiles.4/err/1.0
Normal file
74
testsuite/modulefiles.4/err/1.0
Normal file
@@ -0,0 +1,74 @@
|
||||
#%Module
|
||||
if {[info exists env(TESTSUITE_ERROR_ON_MULTI_LOAD)]} {
|
||||
switch -- $env(TESTSUITE_ERROR_ON_MULTI_LOAD) {
|
||||
bad - load_last_bad - load_first_bad {
|
||||
bad
|
||||
}
|
||||
break - load_first_break {
|
||||
break
|
||||
}
|
||||
continue {
|
||||
continue
|
||||
}
|
||||
error {
|
||||
error msg
|
||||
}
|
||||
conflict {
|
||||
conflict foo
|
||||
}
|
||||
reqmis {
|
||||
prereq unk
|
||||
}
|
||||
depre_load_error {
|
||||
prereq --optional foo
|
||||
if {[module-info mode load]} {
|
||||
error msg
|
||||
}
|
||||
}
|
||||
depre_unload_error {
|
||||
prereq --optional foo
|
||||
if {[module-info mode unload]} {
|
||||
error msg
|
||||
}
|
||||
}
|
||||
depre_load_bad {
|
||||
prereq --optional foo
|
||||
if {[module-info mode load]} {
|
||||
bad
|
||||
}
|
||||
}
|
||||
depre_unload_bad {
|
||||
prereq --optional foo
|
||||
if {[module-info mode unload]} {
|
||||
bad
|
||||
}
|
||||
}
|
||||
depre_load_break {
|
||||
prereq --optional foo
|
||||
if {[module-info mode load]} {
|
||||
break
|
||||
}
|
||||
}
|
||||
depre_unload_break {
|
||||
prereq --optional foo
|
||||
if {[module-info mode unload]} {
|
||||
break
|
||||
}
|
||||
}
|
||||
depre_load_reqmis {
|
||||
prereq --optional foo
|
||||
if {[module-info mode load]} {
|
||||
prereq unk
|
||||
}
|
||||
}
|
||||
depre_load_conflict {
|
||||
prereq --optional foo
|
||||
if {[module-info mode load]} {
|
||||
conflict all
|
||||
}
|
||||
}
|
||||
depre_load_forbidden {
|
||||
prereq --optional foo
|
||||
}
|
||||
}
|
||||
}
|
||||
1
testsuite/modulefiles.4/err/2.0
Normal file
1
testsuite/modulefiles.4/err/2.0
Normal file
@@ -0,0 +1 @@
|
||||
#%Module
|
||||
1
testsuite/modulefiles.4/foo/2.0
Normal file
1
testsuite/modulefiles.4/foo/2.0
Normal file
@@ -0,0 +1 @@
|
||||
#%Module
|
||||
11
testsuite/modulefiles.4/lerr/1.0
Normal file
11
testsuite/modulefiles.4/lerr/1.0
Normal file
@@ -0,0 +1,11 @@
|
||||
#%Module
|
||||
if {[info exists env(TESTSUITE_ERROR_ON_MULTI_LOAD)]} {
|
||||
switch -- $env(TESTSUITE_ERROR_ON_MULTI_LOAD) {
|
||||
load_last_bad {
|
||||
module load foo/1.0 err/1.0
|
||||
}
|
||||
load_first_bad - load_first_break {
|
||||
module load err/1.0 foo/1.0
|
||||
}
|
||||
}
|
||||
}
|
||||
1
testsuite/modulefiles.4/lerr/2.0
Normal file
1
testsuite/modulefiles.4/lerr/2.0
Normal file
@@ -0,0 +1 @@
|
||||
#%Module
|
||||
@@ -193,9 +193,10 @@ setenv_path_var MODULEPATH $modpath.4
|
||||
setenv_var MODULERCFILE $env(TESTSUITEDIR)/etc/modulerc.multi1:$env(TESTSUITEDIR)/etc/modulerc.multi2
|
||||
|
||||
set tserr "foo/1.0 <mytag>
|
||||
foo/2.0
|
||||
foo/alias"
|
||||
testouterr_cmd_re sh {avail -t --starts-with --indepth -o alias:tag foo} OK $tserr
|
||||
testouterr_cmd_re sh {load foo/alias} ERR $err_path'foo/2.0'
|
||||
testouterr_cmd_re sh {load foo/alias} ERR $err_path'foo/4.0'
|
||||
|
||||
setenv_var MODULERCFILE $env(TESTSUITEDIR)/etc/modulerc.multi2:$env(TESTSUITEDIR)/etc/modulerc.multi1
|
||||
testouterr_cmd_re sh {load foo/alias} ERR $err_path'foo/3.0'
|
||||
|
||||
537
testsuite/modules.50-cmds/590-error_on_multi_load-load.exp
Normal file
537
testsuite/modules.50-cmds/590-error_on_multi_load-load.exp
Normal file
@@ -0,0 +1,537 @@
|
||||
##############################################################################
|
||||
# Modules Revision 3.0
|
||||
# Providing a flexible user environment
|
||||
#
|
||||
# File: modules.50-cmds/%M%
|
||||
# Revision: %I%
|
||||
# First Edition: 2023/08/08
|
||||
# Last Mod.: %U%, %G%
|
||||
#
|
||||
# Authors: Xavier Delaruelle, xavier.delaruelle@cea.fr
|
||||
#
|
||||
# Description: Testuite testsequence
|
||||
# Command: load, ml
|
||||
# Modulefiles: error, foo, all, setenv
|
||||
# Sub-Command:
|
||||
#
|
||||
# Comment: %C{
|
||||
# Test error_on_multi_load configuration option with
|
||||
# load sub-command
|
||||
# }C%
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
skip_if_quick_mode
|
||||
|
||||
set mp $modpath.4
|
||||
set mpre $modpathre.4
|
||||
setenv_path_var MODULEPATH $mp
|
||||
|
||||
setenv_var MODULES_AUTO_HANDLING 1
|
||||
|
||||
set ans_continue [list]
|
||||
lappend ans_continue [list out all-pre-out]
|
||||
lappend ans_continue [list set TSPATH dir1]
|
||||
lappend ans_continue [list set LOADEDMODULES all/1.0:foo/1.0]
|
||||
lappend ans_continue [list set _LMFILES_ $mp/all/1.0:$mp/foo/1.0]
|
||||
lappend ans_continue [list set __MODULES_LMREFRESH all/1.0]
|
||||
lappend ans_continue [list set TS ok]
|
||||
lappend ans_continue [list alias alall value]
|
||||
lappend ans_continue [list funcall "() { value; }; export -f funcall;"]
|
||||
lappend ans_continue [list out {complete value compall;}]
|
||||
lappend ans_continue [list chdir /tmp]
|
||||
lappend ans_continue [list out all-out]
|
||||
lappend ans_continue [list ERR]
|
||||
|
||||
set ans_all [list]
|
||||
lappend ans_all [list out all-pre-out]
|
||||
lappend ans_all [list set TSPATH dir1]
|
||||
lappend ans_all [list set __MODULES_LMREFRESH all/1.0]
|
||||
lappend ans_all [list set _LMFILES_ $mp/all/1.0:$mp/err/1.0:$mp/foo/1.0]
|
||||
lappend ans_all [list set LOADEDMODULES all/1.0:err/1.0:foo/1.0]
|
||||
lappend ans_all [list set TS ok]
|
||||
lappend ans_all [list alias alall value]
|
||||
lappend ans_all [list funcall "() { value; }; export -f funcall;"]
|
||||
lappend ans_all [list out {complete value compall;}]
|
||||
lappend ans_all [list chdir /tmp]
|
||||
lappend ans_all [list out all-out]
|
||||
|
||||
set ans_conflict_force [list]
|
||||
lappend ans_conflict_force [list out all-pre-out]
|
||||
lappend ans_conflict_force [list set TSPATH dir1]
|
||||
lappend ans_conflict_force [list set __MODULES_LMCONFLICT err/1.0&foo]
|
||||
lappend ans_conflict_force [list set __MODULES_LMREFRESH all/1.0]
|
||||
lappend ans_conflict_force [list set _LMFILES_ $mp/all/1.0:$mp/foo/1.0:$mp/err/1.0]
|
||||
lappend ans_conflict_force [list set LOADEDMODULES all/1.0:foo/1.0:err/1.0]
|
||||
lappend ans_conflict_force [list set TS ok]
|
||||
lappend ans_conflict_force [list alias alall value]
|
||||
lappend ans_conflict_force [list funcall "() { value; }; export -f funcall;"]
|
||||
lappend ans_conflict_force [list out {complete value compall;}]
|
||||
lappend ans_conflict_force [list chdir /tmp]
|
||||
lappend ans_conflict_force [list out all-out]
|
||||
|
||||
set ans_conflict [list]
|
||||
lappend ans_conflict [list out all-pre-out]
|
||||
lappend ans_conflict [list set TSPATH dir1]
|
||||
lappend ans_conflict [list set __MODULES_LMCONFLICT err/1.0&foo]
|
||||
lappend ans_conflict [list set LOADEDMODULES all/1.0:err/1.0]
|
||||
lappend ans_conflict [list set _LMFILES_ $mp/all/1.0:$mp/err/1.0]
|
||||
lappend ans_conflict [list set __MODULES_LMREFRESH all/1.0]
|
||||
lappend ans_conflict [list set TS ok]
|
||||
lappend ans_conflict [list alias alall value]
|
||||
lappend ans_conflict [list funcall "() { value; }; export -f funcall;"]
|
||||
lappend ans_conflict [list out {complete value compall;}]
|
||||
lappend ans_conflict [list chdir /tmp]
|
||||
lappend ans_conflict [list out all-out]
|
||||
lappend ans_conflict [list ERR]
|
||||
|
||||
set ans_reqmis_force [list]
|
||||
lappend ans_reqmis_force [list out all-pre-out]
|
||||
lappend ans_reqmis_force [list set TSPATH dir1]
|
||||
lappend ans_reqmis_force [list set __MODULES_LMPREREQ err/1.0&unk]
|
||||
lappend ans_reqmis_force [list set __MODULES_LMREFRESH all/1.0]
|
||||
lappend ans_reqmis_force [list set _LMFILES_ $mp/all/1.0:$mp/err/1.0:$mp/foo/1.0]
|
||||
lappend ans_reqmis_force [list set LOADEDMODULES all/1.0:err/1.0:foo/1.0]
|
||||
lappend ans_reqmis_force [list set TS ok]
|
||||
lappend ans_reqmis_force [list alias alall value]
|
||||
lappend ans_reqmis_force [list funcall "() { value; }; export -f funcall;"]
|
||||
lappend ans_reqmis_force [list out {complete value compall;}]
|
||||
lappend ans_reqmis_force [list chdir /tmp]
|
||||
lappend ans_reqmis_force [list out all-out]
|
||||
lappend ans_reqmis_force [list ERR]
|
||||
|
||||
set ans_forbidden [list]
|
||||
lappend ans_forbidden [list out all-pre-out]
|
||||
lappend ans_forbidden [list set TSPATH dir1]
|
||||
lappend ans_forbidden [list set __MODULES_LMREFRESH all/1.0]
|
||||
lappend ans_forbidden [list set _LMFILES_ $mp/all/1.0:$mp/foo/1.0]
|
||||
lappend ans_forbidden [list set LOADEDMODULES all/1.0:foo/1.0]
|
||||
lappend ans_forbidden [list set TS ok]
|
||||
lappend ans_forbidden [list alias alall value]
|
||||
lappend ans_forbidden [list funcall "() { value; }; export -f funcall;"]
|
||||
lappend ans_forbidden [list out {complete value compall;}]
|
||||
lappend ans_forbidden [list chdir /tmp]
|
||||
lappend ans_forbidden [list out all-out]
|
||||
lappend ans_forbidden [list ERR]
|
||||
|
||||
set ans_not_found $ans_forbidden
|
||||
|
||||
set ans_already_loaded [list]
|
||||
lappend ans_already_loaded [list out all-pre-out]
|
||||
lappend ans_already_loaded [list set TSPATH dir1]
|
||||
lappend ans_already_loaded [list set __MODULES_LMREFRESH all/1.0]
|
||||
lappend ans_already_loaded [list set _LMFILES_ $mp/err/1.0:$mp/all/1.0:$mp/foo/1.0]
|
||||
lappend ans_already_loaded [list set LOADEDMODULES err/1.0:all/1.0:foo/1.0]
|
||||
lappend ans_already_loaded [list set TS ok]
|
||||
lappend ans_already_loaded [list alias alall value]
|
||||
lappend ans_already_loaded [list funcall "() { value; }; export -f funcall;"]
|
||||
lappend ans_already_loaded [list out {complete value compall;}]
|
||||
lappend ans_already_loaded [list chdir /tmp]
|
||||
lappend ans_already_loaded [list out all-out]
|
||||
|
||||
set ans_depre_error [list]
|
||||
lappend ans_depre_error [list out all-pre-out]
|
||||
lappend ans_depre_error [list set TS1 {}]
|
||||
lappend ans_depre_error [list set TSPATH dir1]
|
||||
lappend ans_depre_error [list set TS2 {}]
|
||||
lappend ans_depre_error [list set LOADEDMODULES err/1.0:all/1.0:setenv/1.0]
|
||||
lappend ans_depre_error [list set _LMFILES_ $mp/err/1.0:$mp/all/1.0:$mp/setenv/1.0]
|
||||
lappend ans_depre_error [list set __MODULES_LMREFRESH all/1.0]
|
||||
lappend ans_depre_error [list set TS ok]
|
||||
lappend ans_depre_error [list alias alall value]
|
||||
lappend ans_depre_error [list funcall "() { value; }; export -f funcall;"]
|
||||
lappend ans_depre_error [list out {complete value compall;}]
|
||||
lappend ans_depre_error [list chdir /tmp]
|
||||
lappend ans_depre_error [list out all-out]
|
||||
lappend ans_depre_error [list ERR]
|
||||
|
||||
set ans_depre_error_force [list]
|
||||
lappend ans_depre_error_force [list out all-pre-out]
|
||||
lappend ans_depre_error_force [list set TS1 {}]
|
||||
lappend ans_depre_error_force [list set TSPATH dir1]
|
||||
lappend ans_depre_error_force [list set TS2 {}]
|
||||
lappend ans_depre_error_force [list set LOADEDMODULES all/1.0:foo/1.0:setenv/1.0]
|
||||
lappend ans_depre_error_force [list set _LMFILES_ $mp/all/1.0:$mp/foo/1.0:$mp/setenv/1.0]
|
||||
lappend ans_depre_error_force [list set __MODULES_LMREFRESH all/1.0]
|
||||
lappend ans_depre_error_force [list unset __MODULES_LMPREREQ]
|
||||
lappend ans_depre_error_force [list set TS ok]
|
||||
lappend ans_depre_error_force [list alias alall value]
|
||||
lappend ans_depre_error_force [list funcall "() { value; }; export -f funcall;"]
|
||||
lappend ans_depre_error_force [list out {complete value compall;}]
|
||||
lappend ans_depre_error_force [list chdir /tmp]
|
||||
lappend ans_depre_error_force [list out all-out]
|
||||
lappend ans_depre_error_force [list ERR]
|
||||
|
||||
set ans_depre_unload_error_force [list]
|
||||
lappend ans_depre_unload_error_force [list out all-pre-out]
|
||||
lappend ans_depre_unload_error_force [list set TS1 {}]
|
||||
lappend ans_depre_unload_error_force [list set TSPATH dir1]
|
||||
lappend ans_depre_unload_error_force [list set TS2 {}]
|
||||
lappend ans_depre_unload_error_force [list set LOADEDMODULES err/1.0:all/1.0:foo/1.0:setenv/1.0]
|
||||
lappend ans_depre_unload_error_force [list set _LMFILES_ $mp/err/1.0:$mp/all/1.0:$mp/foo/1.0:$mp/setenv/1.0]
|
||||
lappend ans_depre_unload_error_force [list set __MODULES_LMREFRESH all/1.0]
|
||||
lappend ans_depre_unload_error_force [list set TS ok]
|
||||
lappend ans_depre_unload_error_force [list alias alall value]
|
||||
lappend ans_depre_unload_error_force [list funcall "() { value; }; export -f funcall;"]
|
||||
lappend ans_depre_unload_error_force [list out {complete value compall;}]
|
||||
lappend ans_depre_unload_error_force [list chdir /tmp]
|
||||
lappend ans_depre_unload_error_force [list out all-out]
|
||||
lappend ans_depre_unload_error_force [list ERR]
|
||||
|
||||
set ans_single_foo [list]
|
||||
lappend ans_single_foo [list set _LMFILES_ $mp/foo/1.0]
|
||||
lappend ans_single_foo [list set LOADEDMODULES foo/1.0]
|
||||
|
||||
set ans_load_last [list]
|
||||
lappend ans_load_last [list set _LMFILES_ $mp/foo/1.0:$mp/lerr/1.0]
|
||||
lappend ans_load_last [list set LOADEDMODULES foo/1.0:lerr/1.0]
|
||||
lappend ans_load_last [list set __MODULES_LMPREREQ lerr/1.0&foo/1.0|err/1.0]
|
||||
|
||||
if {[cmpversion $tclsh_version 8.6] == -1} {
|
||||
set custom_error_trace " invoked from within
|
||||
\"if \{\[info exists env(TESTSUITE_ERROR_ON_MULTI_LOAD)\]\} \{
|
||||
switch -- \$env(TESTSUITE_ERROR_ON_MULTI_LOAD) \{
|
||||
bad - load_last_bad - load_first_b...\""
|
||||
} else {
|
||||
set custom_error_trace {}
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# continue behavior (multiple module to load)
|
||||
#
|
||||
|
||||
setenv_var MODULES_ERROR_ON_MULTI_LOAD continue
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD bad
|
||||
|
||||
set line_num [expr {[cmpversion $tclsh_version 8.6] == -1 ? 2 : 5}]
|
||||
set ts_bad [msg_load err/1.0 [msg_moderr {invalid command name "bad"} bad $mp/err/1.0 $line_num {} {} {} $custom_error_trace]]
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} $ans_continue $ts_bad
|
||||
|
||||
# --force has no effect
|
||||
testouterr_cmd bash {load --force all/1.0 err/1.0 foo/1.0} $ans_continue $ts_bad
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD break
|
||||
|
||||
set ts_break [msg_load err/1.0 $err_evalabort]
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} $ans_continue $ts_break
|
||||
|
||||
# --force has no effect
|
||||
testouterr_cmd bash {load --force all/1.0 err/1.0 foo/1.0} $ans_continue $ts_break
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD continue
|
||||
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} $ans_all {}
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD error
|
||||
|
||||
set line_num [expr {[cmpversion $tclsh_version 8.6] == -1 ? 2 : 14}]
|
||||
set ts_error_verbose [msg_load all/1.0]\n\n
|
||||
append ts_error_verbose [msg_load err/1.0 [msg_moderr msg {error msg} $mp/err/1.0 $line_num {} {} {} $custom_error_trace]]\n\n
|
||||
append ts_error_verbose [msg_load foo/1.0]
|
||||
testouterr_cmd bash {load -v all/1.0 err/1.0 foo/1.0} $ans_continue $ts_error_verbose
|
||||
|
||||
# ml command follows abort behavior
|
||||
testouterr_cmd bash {ml -v all/1.0 err/1.0 foo/1.0} ERR $ts_error_verbose
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD conflict
|
||||
|
||||
# conflict declared after load attempt of conflicting module
|
||||
set ts_conflict_declared_after [msg_load err/1.0 [err_conlo foo]]
|
||||
testouterr_cmd bash {load all/1.0 foo/1.0 err/1.0} $ans_continue $ts_conflict_declared_after
|
||||
|
||||
# --force by-pass conflict error
|
||||
set ts_conflict_force_declared_after [msg_load err/1.0 [err_conlof foo]]
|
||||
testouterr_cmd bash {load --force all/1.0 foo/1.0 err/1.0} $ans_conflict_force $ts_conflict_force_declared_after
|
||||
|
||||
# conflict declared before load attempt of conflicting module
|
||||
set ts_conflict_declared_before [msg_load foo/1.0 [err_conlo err/1.0]]
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} $ans_conflict $ts_conflict_declared_before
|
||||
|
||||
# ml command follows abort behavior
|
||||
testouterr_cmd bash {ml all/1.0 err/1.0 foo/1.0} ERR $ts_conflict_declared_before
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD reqmis
|
||||
|
||||
set ts_reqmis [msg_load err/1.0 $err_path'unk' [err_reqlo unk]]
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} $ans_continue $ts_reqmis
|
||||
|
||||
# --force by-pass missing requirement error
|
||||
set ts_reqmis_force [msg_load err/1.0 $err_path'unk' [err_reqlof unk]]
|
||||
testouterr_cmd bash {load --force all/1.0 err/1.0 foo/1.0} $ans_reqmis_force $ts_reqmis_force
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD depre_load_error
|
||||
|
||||
setenv_loaded_module [list err/1.0] [list $mp/err/1.0]
|
||||
setenv_var __MODULES_LMPREREQ err/1.0&err/1.0|foo
|
||||
set line_num [expr {[cmpversion $tclsh_version 8.6] == -1 ? 2 : 25}]
|
||||
set ts_depre_load_error [msg_load err/1.0 [msg_moderr msg {error msg} $mp/err/1.0 $line_num {} {} {} $custom_error_trace]]\n\n
|
||||
append ts_depre_load_error [msg_load foo/1.0 [err_depre err/1.0]]
|
||||
testouterr_cmd bash {load all/1.0 foo/1.0 setenv/1.0} $ans_depre_error $ts_depre_load_error
|
||||
|
||||
# --force by-pass dependent reload error
|
||||
set ts_depre_load_error_force [msg_load err/1.0 [msg_moderr msg {error msg} $mp/err/1.0 $line_num {} {} {} $custom_error_trace]]\n\n
|
||||
append ts_depre_load_error_force [msg_load foo/1.0 [err_depref err/1.0] {Unloading dependent: err/1.0}]
|
||||
testouterr_cmd bash {load --force all/1.0 foo/1.0 setenv/1.0} $ans_depre_error_force $ts_depre_load_error_force
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD depre_unload_error
|
||||
|
||||
set line_num [expr {[cmpversion $tclsh_version 8.6] == -1 ? 2 : 31}]
|
||||
set ts_depre_unload_error [msg_unload err/1.0 [msg_moderr msg {error msg} $mp/err/1.0 $line_num {} {} {} $custom_error_trace]]\n\n
|
||||
append ts_depre_unload_error [msg_load foo/1.0 [err_depun err/1.0]]
|
||||
testouterr_cmd bash {load all/1.0 foo/1.0 setenv/1.0} $ans_depre_error $ts_depre_unload_error
|
||||
|
||||
# --force by-pass dependent reload error
|
||||
set ts_depre_unload_error_force [msg_unload err/1.0 [msg_moderr msg {error msg} $mp/err/1.0 $line_num {} {} {} $custom_error_trace]]\n\n
|
||||
append ts_depre_unload_error_force [msg_load foo/1.0 [err_depunf err/1.0]]
|
||||
# FIXME: --force should be able to unload err/1.0
|
||||
testouterr_cmd bash {load --force all/1.0 foo/1.0 setenv/1.0} $ans_depre_unload_error_force $ts_depre_unload_error_force
|
||||
|
||||
unsetenv_loaded_module
|
||||
unsetenv_var __MODULES_LMPREREQ
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD forbidden
|
||||
|
||||
set ts_forbidden [err_accessdenied err/1.0]
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} $ans_forbidden $ts_forbidden
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD not_found
|
||||
|
||||
set ts_not_found $err_path'unk/1.0'
|
||||
testouterr_cmd bash {load all/1.0 unk/1.0 foo/1.0} $ans_not_found $ts_not_found
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD already_loaded
|
||||
|
||||
setenv_loaded_module [list err/1.0] [list $mp/err/1.0]
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} $ans_already_loaded {}
|
||||
unsetenv_loaded_module
|
||||
|
||||
|
||||
#
|
||||
# continue behavior (single module to load, no effect)
|
||||
#
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD bad
|
||||
|
||||
testouterr_cmd bash {load err/1.0} ERR $ts_bad
|
||||
|
||||
# --force has no effect
|
||||
testouterr_cmd bash {load --force err/1.0} ERR $ts_bad
|
||||
|
||||
testouterr_cmd bash {load foo/1.0} $ans_single_foo {}
|
||||
|
||||
|
||||
#
|
||||
# continue behavior ("module load" command in modulefile, no effect)
|
||||
#
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD load_last_bad
|
||||
|
||||
set ts_load_bad $ts_bad\n\n
|
||||
append ts_load_bad [msg_load lerr/1.0 [err_reqlo err/1.0]]
|
||||
testouterr_cmd bash {load lerr/1.0} ERR $ts_load_bad
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD load_first_bad
|
||||
|
||||
testouterr_cmd bash {load lerr/1.0} ERR $ts_load_bad
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD load_first_break
|
||||
|
||||
set ts_load_break $ts_break\n\n
|
||||
append ts_load_break [msg_load lerr/1.0 [err_reqlo err/1.0]]
|
||||
testouterr_cmd bash {load lerr/1.0} ERR $ts_load_break
|
||||
|
||||
|
||||
#
|
||||
# abort behavior (multiple module to load)
|
||||
#
|
||||
|
||||
setenv_var MODULES_ERROR_ON_MULTI_LOAD abort
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD bad
|
||||
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} ERR $ts_bad
|
||||
testouterr_cmd bash {ml all/1.0 err/1.0 foo/1.0} ERR $ts_bad
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD break
|
||||
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} ERR $ts_break
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD continue
|
||||
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} $ans_all {}
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD error
|
||||
|
||||
set line_num [expr {[cmpversion $tclsh_version 8.6] == -1 ? 2 : 14}]
|
||||
set ts_error_verbose_abort [msg_load all/1.0]\n\n
|
||||
append ts_error_verbose_abort [msg_load err/1.0 [msg_moderr msg {error msg} $mp/err/1.0 $line_num {} {} {} $custom_error_trace]]
|
||||
testouterr_cmd bash {load -v all/1.0 err/1.0 foo/1.0} ERR $ts_error_verbose_abort
|
||||
|
||||
# --force has no effect
|
||||
testouterr_cmd bash {load --force -v all/1.0 err/1.0 foo/1.0} ERR $ts_error_verbose_abort
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD conflict
|
||||
|
||||
# conflict declared after load attempt of conflicting module
|
||||
testouterr_cmd bash {load all/1.0 foo/1.0 err/1.0} ERR $ts_conflict_declared_after
|
||||
|
||||
# --force by-pass conflict error
|
||||
testouterr_cmd bash {load --force all/1.0 foo/1.0 err/1.0} $ans_conflict_force $ts_conflict_force_declared_after
|
||||
|
||||
# conflict declared before load attempt of conflicting module
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} ERR $ts_conflict_declared_before
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD reqmis
|
||||
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} ERR $ts_reqmis
|
||||
testouterr_cmd bash {ml all/1.0 err/1.0 foo/1.0} ERR $ts_reqmis
|
||||
|
||||
# --force by-pass missing requirement error
|
||||
testouterr_cmd bash {load --force all/1.0 err/1.0 foo/1.0} $ans_reqmis_force $ts_reqmis_force
|
||||
|
||||
|
||||
setenv_loaded_module [list err/1.0] [list $mp/err/1.0]
|
||||
setenv_var __MODULES_LMPREREQ err/1.0&err/1.0|foo
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD depre_load_error
|
||||
|
||||
testouterr_cmd bash {load all/1.0 foo/1.0 setenv/1.0} ERR $ts_depre_load_error
|
||||
|
||||
# --force by-pass dependent reload error
|
||||
testouterr_cmd bash {load --force all/1.0 foo/1.0 setenv/1.0} $ans_depre_error_force $ts_depre_load_error_force
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD depre_unload_error
|
||||
|
||||
testouterr_cmd bash {load all/1.0 foo/1.0 setenv/1.0} ERR $ts_depre_unload_error
|
||||
|
||||
# --force by-pass dependent reload error
|
||||
# FIXME: --force should be able to unload err/1.0
|
||||
testouterr_cmd bash {load --force all/1.0 foo/1.0 setenv/1.0} $ans_depre_unload_error_force $ts_depre_unload_error_force
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD depre_load_bad
|
||||
|
||||
set line_num [expr {[cmpversion $tclsh_version 8.6] == -1 ? 2 : 37}]
|
||||
set ts_depre_load_bad [msg_load err/1.0 [msg_moderr {invalid command name "bad"} bad $mp/err/1.0 $line_num {} {} {} $custom_error_trace]]\n\n
|
||||
append ts_depre_load_bad [msg_load foo/1.0 [err_depre err/1.0]]
|
||||
testouterr_cmd bash {load all/1.0 foo/1.0 setenv/1.0} ERR $ts_depre_load_bad
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD depre_unload_bad
|
||||
|
||||
set line_num [expr {[cmpversion $tclsh_version 8.6] == -1 ? 2 : 43}]
|
||||
set ts_depre_unload_bad [msg_unload err/1.0 [msg_moderr {invalid command name "bad"} bad $mp/err/1.0 $line_num {} {} {} $custom_error_trace]]\n\n
|
||||
append ts_depre_unload_bad [msg_load foo/1.0 [err_depun err/1.0]]
|
||||
testouterr_cmd bash {load all/1.0 foo/1.0 setenv/1.0} ERR $ts_depre_unload_bad
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD depre_load_break
|
||||
|
||||
set ts_depre_load_break [msg_load err/1.0 $err_evalabort]\n\n
|
||||
append ts_depre_load_break [msg_load foo/1.0 [err_depre err/1.0]]
|
||||
testouterr_cmd bash {load all/1.0 foo/1.0 setenv/1.0} ERR $ts_depre_load_break
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD depre_unload_break
|
||||
|
||||
set ts_depre_unload_break [msg_unload err/1.0 $err_evalabort]\n\n
|
||||
append ts_depre_unload_break [msg_load foo/1.0 [err_depun err/1.0]]
|
||||
testouterr_cmd bash {load all/1.0 foo/1.0 setenv/1.0} ERR $ts_depre_unload_break
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD depre_load_reqmis
|
||||
|
||||
set ts_depre_load_reqmis [msg_load err/1.0 [err_prereq unk]]\n\n
|
||||
append ts_depre_load_reqmis [msg_load foo/1.0 [err_depre err/1.0]]
|
||||
testouterr_cmd bash {load all/1.0 foo/1.0 setenv/1.0} ERR $ts_depre_load_reqmis
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD depre_load_conflict
|
||||
|
||||
set ts_depre_load_conflict [msg_load err/1.0 [err_conlo all]]\n\n
|
||||
append ts_depre_load_conflict [msg_load foo/1.0 [err_depre err/1.0]]
|
||||
testouterr_cmd bash {load all/1.0 foo/1.0 setenv/1.0} ERR $ts_depre_load_conflict
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD depre_load_forbidden
|
||||
|
||||
set ts_depre_load_forbidden [msg_load foo/1.0 [err_accessdenied err/1.0] [err_depre err/1.0]]
|
||||
testouterr_cmd bash {load all/1.0 foo/1.0 setenv/1.0} ERR $ts_depre_load_forbidden
|
||||
|
||||
unsetenv_loaded_module
|
||||
unsetenv_var __MODULES_LMPREREQ
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD forbidden
|
||||
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} ERR $ts_forbidden
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD not_found
|
||||
|
||||
testouterr_cmd bash {load all/1.0 unk/1.0 foo/1.0} ERR $ts_not_found
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD already_loaded
|
||||
|
||||
setenv_loaded_module [list err/1.0] [list $mp/err/1.0]
|
||||
testouterr_cmd bash {load all/1.0 err/1.0 foo/1.0} $ans_already_loaded {}
|
||||
unsetenv_loaded_module
|
||||
|
||||
|
||||
#
|
||||
# abort behavior (single module to load, no effect)
|
||||
#
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD bad
|
||||
|
||||
testouterr_cmd bash {load err/1.0} ERR $ts_bad
|
||||
|
||||
# --force has no effect
|
||||
testouterr_cmd bash {load --force err/1.0} ERR $ts_bad
|
||||
|
||||
testouterr_cmd bash {load foo/1.0} $ans_single_foo {}
|
||||
|
||||
|
||||
#
|
||||
# abort behavior ("module load" command in modulefile, no effect)
|
||||
#
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD load_last_bad
|
||||
|
||||
testouterr_cmd bash {load lerr/1.0} ERR $ts_load_bad
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD load_first_bad
|
||||
|
||||
testouterr_cmd bash {load lerr/1.0} ERR $ts_load_bad
|
||||
|
||||
|
||||
setenv_var TESTSUITE_ERROR_ON_MULTI_LOAD load_first_break
|
||||
|
||||
testouterr_cmd bash {load lerr/1.0} ERR $ts_load_break
|
||||
|
||||
|
||||
#
|
||||
# Cleanup
|
||||
#
|
||||
|
||||
reset_test_env
|
||||
Reference in New Issue
Block a user