ts: add tests for prereq-any in 50/513

This commit is contained in:
Xavier Delaruelle
2021-11-27 14:40:16 +01:00
parent 0e6eda6513
commit c229efb1f6
3 changed files with 175 additions and 0 deletions

View File

@@ -11,6 +11,9 @@ if {[info exists env(TESTSUITE_LCOMPAT)]} {
extrc1 {
extensions moda/1.0 modb/2.0
}
pranyrc1 {
prereq-any foo/1.0 bar/1.0
}
}
}

View File

@@ -0,0 +1,18 @@
#%Module
module-whatis [module-info name]
if {[info exists env(TESTSUITE_LCOMPAT)]} {
switch -- $env(TESTSUITE_LCOMPAT) {
prany1 {
prereq-any foo/1.0 bar/1.0
}
prany2 {
prereq-any foo/1.0
}
prany3 {
prereq-any
}
}
}

View File

@@ -0,0 +1,154 @@
##############################################################################
# Modules Revision 3.0
# Providing a flexible user environment
#
# File: modules.50-cmds/%M%
# Revision: %I%
# First Edition: 2021/11/27
# Last Mod.: %U%, %G%
#
# Authors: Xavier Delaruelle, xavier.delaruelle@cea.fr
#
# Description: Testuite testsequence
# Command: load, unload, display, help, test, whatis, refresh, avail
# Modulefiles: lcompat
# Sub-Command:
#
# Comment: %C{
# Test prereq-any modulefile command
# }C%
#
##############################################################################
skip_if_quick_mode
set mp $modpath.3
set mpre $modpathre.3
setenv_path_var MODULEPATH $mp
set mod lcompat/1.3
set modfile $mp/$mod
set modfilere $mpre/$mod
setenv_var TESTSUITE_LCOMPAT prany1
# load
set ans [list]
lappend ans [list set __MODULES_LMPREREQ $mod&foo/1.0|bar/1.0]
lappend ans [list set _LMFILES_ $mp/foo/1.0:$modfile]
lappend ans [list set LOADEDMODULES foo/1.0:$mod]
lappend ans [list set __MODULES_LMTAG foo/1.0&auto-loaded]
set tserr [msg_top_load $mod {} foo/1.0 {}]
testouterr_cmd sh "load --auto $mod" $ans $tserr
set tserr [msg_load $mod [err_prereqor foo/1.0 bar/1.0]]
testouterr_cmd sh "load --no-auto $mod" ERR $tserr
setenv_loaded_module [list foo/1.0] [list $mp/foo/1.0]
set ans [list]
lappend ans [list set __MODULES_LMPREREQ $mod&foo/1.0|bar/1.0]
lappend ans [list set _LMFILES_ $mp/foo/1.0:$modfile]
lappend ans [list set LOADEDMODULES foo/1.0:$mod]
testouterr_cmd sh "load --auto $mod" $ans {}
setenv_loaded_module [list $mod] [list $modfile]
# unload
set ans [list]
lappend ans [list unset _LMFILES_]
lappend ans [list unset LOADEDMODULES]
testouterr_cmd sh "unload $mod" $ans {}
setenv_loaded_module [list bar/1.0 $mod] [list $mp/bar/1.0 $modfile]
setenv_path_var __MODULES_LMTAG bar/1.0&auto-loaded
setenv_path_var __MODULES_LMPREREQ $mod&foo/1.0|bar/1.0
set ans [list]
lappend ans [list unset __MODULES_LMPREREQ]
lappend ans [list unset _LMFILES_]
lappend ans [list unset LOADEDMODULES]
lappend ans [list unset __MODULES_LMTAG]
set tserr [msg_top_unload $mod {} bar/1.0 {}]
testouterr_cmd sh "unload --auto $mod" $ans $tserr
# refresh
testouterr_cmd sh {refresh} OK {}
unsetenv_loaded_module
unsetenv_path_var __MODULES_LMTAG
unsetenv_path_var __MODULES_LMPREREQ
# whatis
set tserr "$modlin $mpre $modlin
\\s*$mod: $mod"
testouterr_cmd_re sh "whatis $mod" OK $tserr
# display
set tserr "$modlin
$mpre/$mod:
module-whatis\t$mod
prereq-any\tfoo/1.0 bar/1.0
$modlin"
testouterr_cmd_re sh "display $mod" OK $tserr
# help
set tserr "$modlin
Module Specific Help for $mpre/$mod:
$warn_msgs: Unable to find ModulesHelp in $modfilere.
$modlin"
testouterr_cmd_re sh "help $mod" OK $tserr
# test
set tserr "$modlin
Module Specific Test for $mpre/$mod:
$warn_msgs: Unable to find ModulesTest in $modfilere.
$modlin"
testouterr_cmd_re sh "test $mod" OK $tserr
setenv_var TESTSUITE_LCOMPAT prany2
set ans [list]
lappend ans [list set __MODULES_LMPREREQ $mod&foo/1.0]
lappend ans [list set _LMFILES_ $mp/foo/1.0:$modfile]
lappend ans [list set LOADEDMODULES foo/1.0:$mod]
lappend ans [list set __MODULES_LMTAG foo/1.0&auto-loaded]
set tserr [msg_top_load $mod {} foo/1.0 {}]
testouterr_cmd sh "load --auto $mod" $ans $tserr
setenv_var TESTSUITE_LCOMPAT prany3
set ln [expr {[cmpversion $tclsh_version 8.6] == -1 ? 5 : 14}]
set tserr [msg_load $mod [escre [msg_moderr {can't read "holdidlist": no such variable} {prereq-any<EXM>} $modfile $ln]]]
testouterr_cmd_re sh "load $mod" ERR $tserr
setenv_var TESTSUITE_LCOMPAT pranyrc1
set ans [list]
lappend ans [list set _LMFILES_ $modfile]
lappend ans [list set LOADEDMODULES $mod]
lappend ans [list ERR]
set ln [expr {[cmpversion $tclsh_version 8.6] == -1 ? 3 : 15}]
set tserr [escre [msg_moderr {invalid command name "prereq-any"} {prereq-any foo/1.0 bar/1.0<EXM>} $mp/lcompat/.modulerc $ln { }]]
testouterr_cmd_re sh "load $mod" $ans $tserr
set tserr $mp:\n$mod
testouterr_cmd sh "avail -t $mod" OK $tserr
set tserr "$modlin $mpre $modlin
\\s*$mod: $mod"
testouterr_cmd_re sh "whatis $mod" OK $tserr
#
# Cleanup
#
reset_test_env