File: 620-source_cache.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 (348 lines) | stat: -rw-r--r-- 13,117 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
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
##############################################################################
#   Modules Revision 3.0
#   Providing a flexible user environment
#
#   File:		modules.50-cmds/%M%
#   Revision:		%I%
#   First Edition:	2023/11/26
#   Last Mod.:		%U%, %G%
#
#   Authors:		Xavier Delaruelle, xavier.delaruelle@cea.fr
#
#   Description:	Testuite testsequence
#   Command:		load, unload, display, help
#   Modulefiles:    source
#   Sub-Command:
#
#   Comment:	%C{
#         Test source_cache configuration option
#		}C%
#
##############################################################################

skip_if_quick_mode

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


setenv_var TESTSUITE_SOURCE_CACHE regular1

set ans_load [list]
lappend ans_load [list set PROC_FROM_VALUE_POST foobar]
lappend ans_load [list set PROC_FROM_VALUE_FROM2 foobar]
lappend ans_load [list set _LMFILES_ $mp/source/1.0]
lappend ans_load [list set LOADEDMODULES source/1.0]
lappend ans_load [list set VAR_FROM_VALUE_BET foo]
lappend ans_load [list set PROC_PRE_VALUE_FROM2 foobar]
lappend ans_load [list set VAR_FROM_VALUE_FROM foo]
lappend ans_load [list set VAR_FROM_VALUE_POST foo]
lappend ans_load [list set CURRENT_MODULEFILE_FROM2 $mp/source/1.0]
lappend ans_load [list set PROC_FROM_VALUE_BET foobar]
lappend ans_load [list set VAR_PRE_VALUE_FROM bar]
lappend ans_load [list set VAR_PRE_VALUE_POST foo]
lappend ans_load [list set VAR_PRE_VALUE_FROM2 foo]
lappend ans_load [list set PROC_PRE_VALUE_BET foobar]
lappend ans_load [list set PROC_PRE_VALUE_FROM barbar]
lappend ans_load [list set CURRENT_MODULEFILE_BET $mp/source/1.0]
lappend ans_load [list set INFO_SCRIPT_BET $mp/source/1.0]
lappend ans_load [list set PROC_PRE_VALUE_POST foobar]
lappend ans_load [list set CURRENT_MODULEFILE_FROM $mp/source/1.0]
lappend ans_load [list set INFO_SCRIPT_FROM $mp/source/source_file]
lappend ans_load [list set INFO_SCRIPT_POST $mp/source/1.0]
lappend ans_load [list set CURRENT_MODULEFILE_POST $mp/source/1.0]
lappend ans_load [list set VAR_FROM_VALUE_FROM2 foo]
lappend ans_load [list set VAR_PRE_VALUE_BET foo]
lappend ans_load [list set CURRENT_MODULEFILE_PRE $mp/source/1.0]
lappend ans_load [list set INFO_SCRIPT_PRE $mp/source/1.0]
lappend ans_load [list set PROC_FROM_VALUE_FROM foobar]

setenv_var MODULES_SOURCE_CACHE 0
testouterr_cmd bash {load source/1.0} $ans_load {}
setenv_var MODULES_SOURCE_CACHE 1
testouterr_cmd bash {load source/1.0} $ans_load {}


set ts_display "-------------------------------------------------------------------
$mp/source/1.0:

setenv\t\tCURRENT_MODULEFILE_PRE $mp/source/1.0
setenv\t\tINFO_SCRIPT_PRE $mp/source/1.0
setenv\t\tCURRENT_MODULEFILE_FROM $mp/source/1.0
setenv\t\tINFO_SCRIPT_FROM $mp/source/source_file
setenv\t\tPROC_FROM_VALUE_FROM foobar
setenv\t\tPROC_PRE_VALUE_FROM barbar
setenv\t\tVAR_FROM_VALUE_FROM foo
setenv\t\tVAR_PRE_VALUE_FROM bar
setenv\t\tCURRENT_MODULEFILE_BET $mp/source/1.0
setenv\t\tINFO_SCRIPT_BET $mp/source/1.0
setenv\t\tPROC_FROM_VALUE_BET foobar
setenv\t\tPROC_PRE_VALUE_BET foobar
setenv\t\tVAR_FROM_VALUE_BET foo
setenv\t\tVAR_PRE_VALUE_BET foo
setenv\t\tCURRENT_MODULEFILE_FROM2 $mp/source/1.0
setenv\t\tINFO_SCRIPT_FROM $mp/source/source_file
setenv\t\tPROC_FROM_VALUE_FROM2 foobar
setenv\t\tPROC_PRE_VALUE_FROM2 foobar
setenv\t\tVAR_FROM_VALUE_FROM2 foo
setenv\t\tVAR_PRE_VALUE_FROM2 foo
setenv\t\tCURRENT_MODULEFILE_POST $mp/source/1.0
setenv\t\tINFO_SCRIPT_POST $mp/source/1.0
setenv\t\tPROC_FROM_VALUE_POST foobar
setenv\t\tPROC_PRE_VALUE_POST foobar
setenv\t\tVAR_FROM_VALUE_POST foo
setenv\t\tVAR_PRE_VALUE_POST foo
-------------------------------------------------------------------"

setenv_var MODULES_SOURCE_CACHE 0
testouterr_cmd bash {display source/1.0} OK $ts_display
setenv_var MODULES_SOURCE_CACHE 1
testouterr_cmd bash {display source/1.0} OK $ts_display


setenv_loaded_module [list source/1.0] [list $mp/source/1.0]
set ans_unload [list]
lappend ans_unload [list unset PROC_FROM_VALUE_POST]
lappend ans_unload [list unset PROC_FROM_VALUE_FROM2]
lappend ans_unload [list unset _LMFILES_]
lappend ans_unload [list unset LOADEDMODULES]
lappend ans_unload [list unset VAR_FROM_VALUE_BET]
lappend ans_unload [list unset PROC_PRE_VALUE_FROM2]
lappend ans_unload [list unset VAR_FROM_VALUE_FROM]
lappend ans_unload [list unset VAR_FROM_VALUE_POST]
lappend ans_unload [list unset CURRENT_MODULEFILE_FROM2]
lappend ans_unload [list unset PROC_FROM_VALUE_BET]
lappend ans_unload [list unset VAR_PRE_VALUE_FROM]
lappend ans_unload [list unset VAR_PRE_VALUE_POST]
lappend ans_unload [list unset VAR_PRE_VALUE_FROM2]
lappend ans_unload [list unset PROC_PRE_VALUE_BET]
lappend ans_unload [list unset PROC_PRE_VALUE_FROM]
lappend ans_unload [list unset CURRENT_MODULEFILE_BET]
lappend ans_unload [list unset INFO_SCRIPT_BET]
lappend ans_unload [list unset PROC_PRE_VALUE_POST]
lappend ans_unload [list unset CURRENT_MODULEFILE_FROM]
lappend ans_unload [list unset INFO_SCRIPT_FROM]
lappend ans_unload [list unset INFO_SCRIPT_POST]
lappend ans_unload [list unset CURRENT_MODULEFILE_POST]
lappend ans_unload [list unset VAR_FROM_VALUE_FROM2]
lappend ans_unload [list unset VAR_PRE_VALUE_BET]
lappend ans_unload [list unset CURRENT_MODULEFILE_PRE]
lappend ans_unload [list unset INFO_SCRIPT_PRE]
lappend ans_unload [list unset PROC_FROM_VALUE_FROM]

setenv_var MODULES_SOURCE_CACHE 0
testouterr_cmd bash {unload source/1.0} $ans_unload {}
setenv_var MODULES_SOURCE_CACHE 1
testouterr_cmd bash {unload source/1.0} $ans_unload {}

unsetenv_loaded_module


setenv_var TESTSUITE_SOURCE_CACHE rc1

set ans_avail "$mp/source/.modulerc
$mp/source/source_file
$mp/source/.modulerc"
set ts_avail "$mp:
source-sh/1
source-sh/2
source/1.0
source/2.0
source/bar(@)
source/foo(@)
source/zz"

setenv_var MODULES_SOURCE_CACHE 0
testouterr_cmd bash {avail -t source} $ans_avail $ts_avail
setenv_var MODULES_SOURCE_CACHE 1
testouterr_cmd bash {avail -t source} $ans_avail $ts_avail


set ans_load [list]
lappend ans_load [list out $mp/source/.modulerc]
lappend ans_load [list out $mp/source/source_file]
lappend ans_load [list out $mp/source/.modulerc]
lappend ans_load [list set __MODULES_LMALTNAME source/1.0&al|source/bar&al|source/foo]
lappend ans_load [list set _LMFILES_ $mp/source/1.0]
lappend ans_load [list set LOADEDMODULES source/1.0]

setenv_var MODULES_SOURCE_CACHE 0
testouterr_cmd bash {load source/1.0} $ans_load {}
setenv_var MODULES_SOURCE_CACHE 1
testouterr_cmd bash {load source/1.0} $ans_load {}


if {[cmpversion $tclsh_version 8.6] == -1} {
    set custom_error_trace "    invoked from within
\"if \{\[info exists env(TESTSUITE_SOURCE_CACHE)\]\} \{
    switch -- \$env(TESTSUITE_SOURCE_CACHE) \{
        regular1 \{
            setenv CURRENT_MODULEFILE...\""
    set custom_error_trace_rc "    invoked from within
\"if \{\[info exists env(TESTSUITE_SOURCE_CACHE)\]\} \{
    switch -- \$env(TESTSUITE_SOURCE_CACHE) \{
        rc1 \{
            proc proc_pre \{args\} \{
       ...\""
} else {
    set custom_error_trace {}
    set custom_error_trace_rc {}
}

setenv_var TESTSUITE_SOURCE_CACHE unk1

set line_num [expr {[cmpversion $tclsh_version 8.6] == -1 ? 2 : 31}]
set ts_load [msg_load source/1.0 [msg_moderr {couldn't read file "../path/to/unk": no such file or directory} {source ../path/to/unk} $mp/source/1.0 $line_num {} {} {} $custom_error_trace]]

setenv_var MODULES_SOURCE_CACHE 0
testouterr_cmd bash {load source/1.0} ERR $ts_load
setenv_var MODULES_SOURCE_CACHE 1
set ts_load [msg_load source/1.0 [msg_moderr [couldnotopen_nofile ../path/to/unk] {source ../path/to/unk} $mp/source/1.0 $line_num {} {} {} $custom_error_trace]]
testouterr_cmd bash {load source/1.0} ERR $ts_load

setenv_var TESTSUITE_SOURCE_CACHE err1

if {[cmpversion $tclsh_version 8.6] > -1} {

set custom_load "    (file \"$mp/source/source_file\" line 38)
    invoked from within
\"source \[file dirname \$ModulesCurrentModulefile\]/source_file\""
set ts_load [msg_load source/1.0 [msg_moderr {msg} {error msg} $mp/source/1.0 27 {} {} {} $custom_load]]

setenv_var MODULES_SOURCE_CACHE 0
testouterr_cmd bash {load source/1.0} ERR $ts_load

set custom_load "<EXM>    invoked from within
\"source \[file dirname \$ModulesCurrentModulefile\]/source_file\""
set ts_load [escre [msg_load source/1.0 [msg_moderr {msg} {error msg} $mp/source/1.0 27 {} {} {} $custom_load]]]
setenv_var MODULES_SOURCE_CACHE 1
testouterr_cmd_re bash {load source/1.0} ERR $ts_load

}

setenv_var TESTSUITE_SOURCE_CACHE break1

set ts_load [msg_load source/1.0 $err_evalabort]

setenv_var MODULES_SOURCE_CACHE 0
testouterr_cmd bash {load source/1.0} ERR $ts_load
setenv_var MODULES_SOURCE_CACHE 1
testouterr_cmd bash {load source/1.0} ERR $ts_load


setenv_var TESTSUITE_SOURCE_CACHE unk_rc1

set ts_avail "$mp:
source-sh/1
source-sh/2
source/1.0
source/2.0
source/zz"

setenv_var MODULES_SOURCE_CACHE 0
testouterr_cmd bash {avail -t source} OK $ts_avail

set line_num [expr {[cmpversion $tclsh_version 8.6] == -1 ? 2 : 18}]
set ts_load [msg_moderr {couldn't read file "../path/to/unk": no such file or directory} {source ../path/to/unk} $mp/source/.modulerc $line_num {  } {} {} $custom_error_trace_rc]
set ans_load [list]
lappend ans_load [list set _LMFILES_ $mp/source/1.0]
lappend ans_load [list set LOADEDMODULES source/1.0]
lappend ans_load [list ERR]
testouterr_cmd bash {load source/1.0} $ans_load $ts_load

setenv_var MODULES_SOURCE_CACHE 1
testouterr_cmd bash {avail -t source} OK $ts_avail

set ts_load [msg_moderr [couldnotopen_nofile ../path/to/unk] {source ../path/to/unk} $mp/source/.modulerc $line_num {  } {} {} $custom_error_trace_rc]
testouterr_cmd bash {load source/1.0} $ans_load $ts_load


setenv_var TESTSUITE_SOURCE_CACHE err_rc1

setenv_var MODULES_SOURCE_CACHE 0
testouterr_cmd bash {avail -t source} OK $ts_avail

if {[cmpversion $tclsh_version 8.6] > -1} {

set custom_load "    (file \"$mp/source/source_file\" line 38)
    invoked from within
\"source \[file dirname \$ModulesCurrentModulefile\]/source_file\""
set ts_load [msg_moderr {msg} {error msg} $mp/source/.modulerc 14 {  } {} {} $custom_load]
testouterr_cmd bash {load source/1.0} $ans_load $ts_load
}

setenv_var MODULES_SOURCE_CACHE 1
testouterr_cmd bash {avail -t source} OK $ts_avail

if {[cmpversion $tclsh_version 8.6] > -1} {

set custom_load "<EXM>    invoked from within
\"source \[file dirname \$ModulesCurrentModulefile\]/source_file\""
set ts_load [escre [msg_moderr {msg} {error msg} $mp/source/.modulerc 14 {  } {} {} $custom_load]]
testouterr_cmd_re bash {load source/1.0} $ans_load $ts_load

}

# cannot test access if cannot change file permission
if {!$is_file_perms_editable} {
    send_user "\tskipping access tests as file permissions cannot be changed\n"
# cannot test access if superuser privileges are in use
} elseif {$tcl_platform(user) eq "root"} {
    send_user "\tskipping access tests as tests are run by superuser\n"
# cannot test access if restricted file permissions have no effect
} elseif {$is_locked_dir_file_readable && $is_locked_file_readable} {
    send_user "\tskipping access tests as locked files or directories are still readable\n"
} else {

set hide_perms "ugo-rx"
change_file_perms $mp/source/source_file $hide_perms

setenv_var TESTSUITE_SOURCE_CACHE regular1

setenv_var MODULES_SOURCE_CACHE 0

set line_num [expr {[cmpversion $tclsh_version 8.6] == -1 ? 2 : 11}]
set ts_load [msg_load source/1.0 [msg_moderr "couldn't read file \"$mp/source/source_file\": permission denied" {source [file dirname $ModulesCurrentModulefile]/source_file} $mp/source/1.0 $line_num {} {} {} $custom_error_trace]]
testouterr_cmd bash {load source/1.0} ERR $ts_load

setenv_var MODULES_SOURCE_CACHE 1

set ts_load [msg_load source/1.0 [msg_moderr [couldnotopen_permdenied $mp/source/source_file] {source [file dirname $ModulesCurrentModulefile]/source_file} $mp/source/1.0 $line_num {} {} {} $custom_error_trace]]
testouterr_cmd bash {load source/1.0} ERR $ts_load


setenv_var TESTSUITE_SOURCE_CACHE rc1

setenv_var MODULES_SOURCE_CACHE 0

set line_num [expr {[cmpversion $tclsh_version 8.6] == -1 ? 2 : 9}]
set ts_load [msg_moderr "couldn't read file \"$mp/source/source_file\": permission denied" {source [file dirname $ModulesCurrentModulefile]/source_file} $mp/source/.modulerc $line_num {  } {} {} $custom_error_trace_rc]
set ans_load [list]
lappend ans_load [list out $mp/source/.modulerc]
lappend ans_load [list set _LMFILES_ $mp/source/1.0]
lappend ans_load [list set LOADEDMODULES source/1.0]
lappend ans_load [list ERR]
testouterr_cmd bash {load source/1.0} $ans_load $ts_load

setenv_var MODULES_SOURCE_CACHE 1

set ts_load [msg_moderr [couldnotopen_permdenied $mp/source/source_file] {source [file dirname $ModulesCurrentModulefile]/source_file} $mp/source/.modulerc $line_num {  } {} {} $custom_error_trace_rc]
testouterr_cmd bash {load source/1.0} $ans_load $ts_load

restore_file_perms $mp/source/source_file

}


#
#  Cleanup
#

reset_test_env