1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
|
##############################################################################
# Modules Revision 3.0
# Providing a flexible user environment
#
# File: modules.50-cmds/%M%
# Revision: %I%
# First Edition: 2023/07/09
# Last Mod.: %U%, %G%
#
# Authors: Xavier Delaruelle, xavier.delaruelle@cea.fr
#
# Description: Testuite testsequence
# Command: avail
# Modulefiles: label
# Sub-Command:
#
# Comment: %C{
# Test modulepath-label modulefile command
# }C%
#
##############################################################################
set mp $modpath.4
set mpre $modpathre.4
setenv_path_var MODULEPATH $mp
# ensure avail tests are made using in depth mode
setenv_var MODULES_AVAIL_INDEPTH 1
# ensure regular avail search match is set for these tests
setenv_var MODULES_SEARCH_MATCH starts_with
# test the different output mode (regular, terse, long, json)
setenv_var TESTSUITE_MODULEPATH_LABEL rel1
set tserr "$modlin My label $modlin
label/1.0 "
testouterr_cmd_re sh {avail label} OK $tserr
set tserr "$modlin My label $modlin
\\s+label/1.0: label/1.0"
testouterr_cmd_re sh {whatis label} OK $tserr
skip_if_quick_mode
testerr_cmd_re sh {search label} $tserr
set tserr "My label:
label/1.0"
testouterr_cmd sh {avail -t label} OK $tserr
set tserr "- Package/Alias $modlin.- Versions $modlin.- Last mod. $modlin
My label:
label/1.0 \[0-9\/]{10} \[0-9:]{8}"
testouterr_cmd_re sh {avail -l label} OK $tserr
set tserr "{\"My label\": {
\"label/1.0\": { \"name\": \"label/1.0\", \"type\": \"modulefile\", \"symbols\": \[\], \"tags\": \[\], \"pathname\": \"$modpath.4/label/1.0\", \"via\": \"\"}
}}"
testouterr_cmd sh {avail -j label} OK $tserr
set tserr "{\"My label\": {
\"label/1.0\": { \"name\": \"label/1.0\", \"whatis\": \[ \"label/1.0\" \]}
}}"
testouterr_cmd sh {whatis -j label} OK $tserr
testerr_cmd sh {search -j label} $tserr
# different relative path
setenv_var TESTSUITE_MODULEPATH_LABEL rel2
set tserr "$modlin My label $modlin
label/1.0 "
testouterr_cmd_re sh {avail label} OK $tserr
setenv_var TESTSUITE_MODULEPATH_LABEL rel3
testouterr_cmd_re sh {avail label} OK $tserr
# fully qualified path
setenv_var TESTSUITE_MODULEPATH_LABEL fqpath1
testouterr_cmd_re sh {avail label} OK $tserr
# empty module path
setenv_var TESTSUITE_MODULEPATH_LABEL empty1
set tserr "$modlin $modpathre.4 $modlin
label/1.0 "
testouterr_cmd_re sh {avail label} OK $tserr
# erroneous call
setenv_var TESTSUITE_MODULEPATH_LABEL err1
testouterr_cmd_re sh {avail label} OK $tserr
# very long label
setenv_var TESTSUITE_MODULEPATH_LABEL long1
set tserr "$modlin very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very long label $modlin
label/1.0 "
testouterr_cmd_re sh {avail label} OK $tserr
# apply label from other path
setenv_var TESTSUITE_MODULEPATH_LABEL otherpath1
setenv_path_var MODULEPATH $mp:$modpath.3
set tserr "$modlin $mpre $modlin
foo/1.0
$modlin Other label $modlin
foo/1.0 "
testouterr_cmd_re sh {avail foo/1.0} OK $tserr
setenv_path_var MODULEPATH $modpath.3:$mp
set tserr "$modlin $modpathre.3 $modlin
foo/1.0
$modlin $mpre $modlin
foo/1.0 "
testouterr_cmd_re sh {avail foo/1.0} OK $tserr
setenv_path_var MODULEPATH $mp
# definition from global rc file
setenv_var MODULERCFILE $env(TESTSUITEDIR)/etc/modulerc.label
setenv_var TESTSUITE_MODULEPATH_LABEL rc1
set tserr "$modlin global/user modulerc $modlin
label/alias
$modlin My label $modlin
label/1.0 "
testouterr_cmd_re sh {avail -o modulepath:alias label} OK $tserr
setenv_var TESTSUITE_MODULEPATH_LABEL rc2
set tserr "$modlin global/user modulerc $modlin
label/alias
$modlin $mpre $modlin
label/1.0 "
testouterr_cmd_re sh {avail -o modulepath:alias label} OK $tserr
setenv_var TESTSUITE_MODULEPATH_LABEL rc3
testouterr_cmd_re sh {avail -o modulepath:alias label} OK $tserr
setenv_var MODULERCFILE $ORIG_MODULERCFILE
# duplicate definitions
setenv_var TESTSUITE_MODULEPATH_LABEL dup1
set tserr "$modlin Other label $modlin
label/1.0 "
testouterr_cmd_re sh {avail label} OK $tserr
setenv_var TESTSUITE_MODULEPATH_LABEL dup2
testouterr_cmd_re sh {avail label} OK $tserr
# cascading definitions
setenv_var MODULERCFILE $env(TESTSUITEDIR)/etc/modulerc.label
setenv_var TESTSUITE_MODULEPATH_LABEL dup3
set tserr "$modlin Modulepath rc label $modlin
label/1.0 "
testouterr_cmd_re sh {avail label/1.0} OK $tserr
setenv_var TESTSUITE_MODULEPATH_LABEL dup4
set tserr "$modlin Module rc label $modlin
label/1.0 "
testouterr_cmd_re sh {avail label/1.0} OK $tserr
setenv_var TESTSUITE_MODULEPATH_LABEL dup5
testouterr_cmd_re sh {avail label/1.0} OK $tserr
setenv_var MODULES_ADVANCED_VERSION_SPEC 1
set tserr "$modlin Modulefile label $modlin
label/1.0 "
testouterr_cmd_re sh {avail label/1.0 envvar:XTFOO} OK $tserr
unsetenv_var MODULES_ADVANCED_VERSION_SPEC
setenv_var MODULERCFILE $ORIG_MODULERCFILE
#
# Cleanup
#
reset_test_env
|