File: 152-module-emptyarg.exp

package info (click to toggle)
modules 5.6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 23,036 kB
  • sloc: exp: 79,659; sh: 6,142; tcl: 5,900; makefile: 1,492; ansic: 474; python: 265; csh: 202; perl: 47; ruby: 44; lisp: 13
file content (280 lines) | stat: -rw-r--r-- 10,399 bytes parent folder | download
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
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
##############################################################################
#   Modules Revision 3.0
#   Providing a flexible user environment
#
#   File:		modules.50-cmds/%M%
#   Revision:		%I%
#   First Edition:	2018/04/01
#   Last Mod.:		%U%, %G%
#
#   Authors:		Xavier Delaruelle, xavier.delaruelle@cea.fr
#
#   Description:	Testuite testsequence
#   Command:        load, unload, display, test, switch, whatis,
#                   apropos, purge, reload, aliases, savelist, save,
#                   restore, saveshow, saverm, use, unuse, avail
#   Modulefiles:
#   Sub-Command:
#
#   Comment:	%C{
#           Test module commands called from modulefile with an empty string
#           argument called
#		}C%
#
##############################################################################

skip_if_quick_mode

# ensure auto symbolic versions are not set for these tests
setenv_var MODULES_ADVANCED_VERSION_SPEC 0

set module "modemptyarg"
set modulepath "$modpath.2"
set modulepathre "$modpathre.2"

# setup specific environment
setenv_path_var MODULEPATH $modulepath

# no test of module commands that can only be called from the top level
# (command-line). these commands are already checked in 151-module-onlytop.exp

#
# test load mode
#

# wrong arg number if command does not accept any argument
foreach cmd [list purge reload aliases] {
    testouterr_cmd "sh" "load $module/$cmd" "ERR" [msg_load $module/$cmd [msg_moderr "Unexpected number of args for '$cmd' command" "module $cmd {}" $modulepath/$module/$cmd 27]]
}

# on most module commands, empty arg leads to error
# test both empty names {} and "" on same module command
testouterr_cmd "sh" "load $module/load" "ERR" [msg_load $module/load $err_emptymodname [err_reqlo {}]]
if {[is_conf_enabled autohandling conflictunload]} {
    set ans [list]
    lappend ans [list set __MODULES_LMCONFLICT "$module/unload&"]
    lappend ans [list set _LMFILES_ "$modulepath/$module/unload"]
    lappend ans [list set LOADEDMODULES "$module/unload"]
    set tserr {}
} else {
    set ans ERR
    set tserr [msg_load $module/unload $err_emptymodname $err_emptymodname]
}
testouterr_cmd "sh" "load $module/unload" $ans $tserr

testouterr_cmd "sh" "load $module/load-any" "ERR" [msg_load $module/load-any [err_reqlo {} {}]]

set ans [list]
lappend ans [list set __MODULES_LMPREREQ "$module/try-load&$module/try-load|"]
lappend ans [list set _LMFILES_ "$modulepath/$module/try-load"]
lappend ans [list set LOADEDMODULES "$module/try-load"]
testouterr_cmd "sh" "load $module/try-load" $ans {}

# for some module commands, error is not fatal and modulefile is loaded
foreach cmd [list display test whatis] {
    set ans [list]
    lappend ans [list set _LMFILES_ "$modulepath/$module/$cmd"]
    lappend ans [list set LOADEDMODULES "$module/$cmd"]
    lappend ans [list ERR]
    testouterr_cmd "sh" "load $module/$cmd" $ans [msg_load $module/$cmd $err_emptymodname]
}
testouterr_cmd "sh" "load $module/swap" ERR [msg_load $module/swap $err_emptymodname]
# switch: an empty second arg leads to one name rule
testouterr_cmd_re "sh" "load $module/swap2" ERR [msg_load $module/swap2 $err_path'barunk' [err_reqlo barunk]]
testouterr_cmd "sh" "load $module/swap3" ERR [msg_load $module/swap3 $err_emptymodname]
foreach cmd [list use unuse] {
    set ans [list]
    lappend ans [list set _LMFILES_ "$modulepath/$module/$cmd"]
    lappend ans [list set LOADEDMODULES "$module/$cmd"]
    lappend ans [list ERR]
    testouterr_cmd "sh" "load $module/$cmd" $ans [msg_load $module/$cmd $err_emptydirname]
}

# or error is reported as modulefile error rather global error
foreach cmd [list save restore saveshow saverm] {
    testouterr_cmd "sh" "load $module/$cmd" "ERR" [msg_load $module/$cmd [msg_moderr $msg_collnameempty "module $cmd {}" $modulepath/$module/$cmd 27]]
}

set ans [list]
lappend ans [list set _LMFILES_ "$modulepath/$module/apropos"]
lappend ans [list set LOADEDMODULES "$module/apropos"]
# other evaluated modulefiles lead to an error result on stdout
lappend ans [list ERR]
testouterr_cmd_re "sh" "load $module/apropos" $ans {.+}
set ans [list]
lappend ans [list set _LMFILES_ "$modulepath/$module/avail"]
lappend ans [list set LOADEDMODULES "$module/avail"]
testouterr_cmd_re "sh" "load $module/avail" $ans ".+"
set ans [list]
lappend ans [list set _LMFILES_ $modulepath/$module/list]
lappend ans [list set LOADEDMODULES $module/list]
testouterr_cmd sh "load $module/list" $ans $no_loaded
set ans [list]
lappend ans [list set _LMFILES_ $modulepath/$module/savelist]
lappend ans [list set LOADEDMODULES $module/savelist]
testouterr_cmd sh "load $module/savelist" $ans [msg_no_named_coll]


#
# test unload mode
#

# wrong arg number if command does not accept any argument
foreach cmd [list purge reload aliases] {
    setenv_loaded_module "$module/$cmd" "$modulepath/$module/$cmd"
    testouterr_cmd "sh" "unload $module/$cmd" "ERR" [msg_unload $module/$cmd [msg_moderr "Unexpected number of args for '$cmd' command" "module $cmd {}" $modulepath/$module/$cmd 27]]
}

# on most module commands, empty arg leads to error
foreach cmd [list load load-any try-load unload] {
    setenv_loaded_module "$module/$cmd" "$modulepath/$module/$cmd"
    set ans [list]
    lappend ans [list unset _LMFILES_]
    lappend ans [list unset LOADEDMODULES]
    testouterr_cmd "sh" "unload $module/$cmd" $ans ""
}

# for some module commands, error is not fatal and modulefile is unloaded
foreach cmd [list display test whatis] {
    setenv_loaded_module "$module/$cmd" "$modulepath/$module/$cmd"
    set ans [list]
    lappend ans [list unset _LMFILES_]
    lappend ans [list unset LOADEDMODULES]
    lappend ans [list ERR]
    testouterr_cmd "sh" "unload $module/$cmd" $ans [msg_unload $module/$cmd $err_emptymodname]
}
setenv_loaded_module "$module/swap" "$modulepath/$module/swap"
set ans [list]
lappend ans [list unset _LMFILES_]
lappend ans [list unset LOADEDMODULES]
testouterr_cmd "sh" "unload $module/swap" $ans {}
# switch: an empty second arg leads to one name rule
setenv_loaded_module "$module/swap2" "$modulepath/$module/swap2"
testouterr_cmd_re "sh" "unload $module/swap2" $ans {}
setenv_loaded_module "$module/swap3" "$modulepath/$module/swap3"
testouterr_cmd_re "sh" "unload $module/swap3" $ans {}
lappend ans [list ERR]
foreach cmd [list use unuse] {
    setenv_loaded_module "$module/$cmd" "$modulepath/$module/$cmd"
    testouterr_cmd "sh" "unload $module/$cmd" $ans [msg_unload $module/$cmd $err_emptydirname]
}

# or error is reported as modulefile error rather global error
foreach cmd [list save restore saveshow saverm] {
    setenv_loaded_module "$module/$cmd" "$modulepath/$module/$cmd"
    testouterr_cmd "sh" "unload $module/$cmd" "ERR" [msg_unload $module/$cmd [msg_moderr $msg_collnameempty "module $cmd {}" $modulepath/$module/$cmd 27]]
}

setenv_loaded_module "$module/apropos" "$modulepath/$module/apropos"
set ans [list]
lappend ans [list unset _LMFILES_]
lappend ans [list unset LOADEDMODULES]
# other evaluated modulefiles lead to an error result on stdout
lappend ans [list ERR]
testouterr_cmd_re "sh" "unload $module/apropos" $ans {.+}
setenv_loaded_module "$module/avail" "$modulepath/$module/avail"
set ans [list]
lappend ans [list unset _LMFILES_]
lappend ans [list unset LOADEDMODULES]
testouterr_cmd_re "sh" "unload $module/avail" $ans ".+"
setenv_loaded_module $module/list $modulepath/$module/list
set ans [list]
lappend ans [list unset _LMFILES_]
lappend ans [list unset LOADEDMODULES]
testouterr_cmd sh "unload $module/list" $ans "$cur_matchingloaded\n 1) $module/list  "
setenv_loaded_module $module/savelist $modulepath/$module/savelist
set ans [list]
lappend ans [list unset _LMFILES_]
lappend ans [list unset LOADEDMODULES]
testouterr_cmd sh "unload $module/savelist" $ans [msg_no_named_coll]

# restore environment
unsetenv_loaded_module


#
# test display mode
#

proc display_stderr_content {modfile content} {
    if {$content ne ""} {
        append content "\n"
    }

    return "$::modlin\n$modfile:\n\n$content$::modlin"
}


# on all module commands, command line with empty arg is printed
foreach cmd [list load load-any try-load unload] {
    # test both empty names {} and "" on same module command
    testouterr_cmd_re "sh" "display $module/$cmd" "OK" [display_stderr_content "$modulepathre/$module/$cmd" "module\t\t$cmd {} {}"]
}
foreach cmd [list use unuse list purge reload aliases savelist display test save restore saveshow saverm whatis apropos avail] {
    testouterr_cmd_re "sh" "display $module/$cmd" "OK" [display_stderr_content "$modulepathre/$module/$cmd" "module\t\t$cmd {}"]
}
testouterr_cmd_re "sh" "display $module/swap" "OK" [display_stderr_content "$modulepathre/$module/swap" "module\t\tswap {} barunk"]
testouterr_cmd_re "sh" "display $module/swap2" "OK" [display_stderr_content "$modulepathre/$module/swap2" "module\t\tswap barunk {}"]


#
# test help mode
#

proc help_stderr_content {modfile content {procwarn 0}} {
    if {$content ne ""} {
        append content "\n"
    }

    if {$procwarn} {
        append content "WARNING: Unable to find ModulesHelp in $modfile.\n"
    }

    return "$::modlin\nModule Specific Help for $modfile:\n\n$content$::modlin"
}

# on all module commands, command line is ignored
foreach cmd [list load load-any try-load unload use unuse list purge reload aliases savelist display test swap swap2 save restore saveshow saverm whatis apropos avail] {
    testouterr_cmd_re "sh" "help $module/$cmd" "OK" [help_stderr_content "$modulepathre/$module/$cmd" "" 1]
}


#
# test test mode
#

proc test_stderr_content {modfile content {procwarn 0}} {
    if {$content ne ""} {
        append content "\n"
    }

    if {$procwarn} {
        append content "WARNING: Unable to find ModulesTest in $modfile.\n"
    }

    return "$::modlin\nModule Specific Test for $modfile:\n\n$content$::modlin"
}

# on all module commands, command line is ignored
foreach cmd [list load load-any try-load unload use unuse list purge reload aliases savelist display test swap swap2 save restore saveshow saverm whatis apropos avail] {
    testouterr_cmd_re "sh" "test $module/$cmd" "OK" [test_stderr_content "$modulepathre/$module/$cmd" "" 1]
}


#
# test whatis mode
#

testouterr_cmd "sh" "whatis $module" "OK" ""


#
#  Cleanup
#

reset_test_env

# remove procs
rename display_stderr_content {}
rename help_stderr_content {}
rename test_stderr_content {}