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
|
#%Module1.0
##############################################################################
# Modules Revision 3.0
# Providing a flexible user environment
#
# File: spreadrc/%M%
# Revision: %I%
# First Edition: 2017/06/23
# Last Mod.: %U%, %G%
#
# Authors: Xavier Delaruelle, xavier.delaruelle@cea.fr
#
# Description: Testuite modulefile
# Command:
# Sub-Command:
#
# Invocation: load @M@, unload @M@, switch @M@ @M@,
# help @M@, display @M@, test @M@, whatis @M@
# Result: %R{
# }R%
# Comment: %C{
# Test how variable and procedure definitions spread from
# one modulerc or modulefile interpretation to another one
# when these interpretations are cascaded.
# }C%
#
##############################################################################
# test if specific or overridden pre-existing variables have spread here
# coming from modulerc or sibbling modulefiles
if {[info exists spreadrc]} {
puts stderr "variable spreadrc exists"
}
if {[info exists spreadmod]} {
puts stderr "variable spreadmod exists"
}
if {$tcl_version eq "test"} {
puts stderr "variable tcl_version equals test"
}
if {[array exists spreadrc_array]} {
puts stderr "array variable spreadrc_array exists"
}
if {[array exists spreadmod_array]} {
puts stderr "array variable spreadmod_array exists"
}
if {$tcl_platform(osVersion) eq "test"} {
puts stderr "variable tcl_platform(osVersion) equals test"
}
if {[llength $auto_path] <= 1} {
puts stderr "variable auto_path has lost elements"
}
if {[lsearch -exact $auto_path $env(TESTSUITEDIR)] > -1} {
puts stderr "variable auto_path contains $env(TESTSUITEDIR)"
}
# test if specific or overridden interpreter alias command have spread here
# coming from modulerc or sibbling modulefiles
set existing_proc [lindex [info procs] 0]
# test if first proc defined has been altered
if {[info procs $existing_proc] ne $existing_proc} {
puts stderr "procedure $existing_proc does not exist"
# env variable spread across interpretation and even between interpreters
} else {
if {[info exists env(spreadmodcasc)] && [$existing_proc] ne "spreadmodcasc" &&\
[module-info command] ni {spider}} {
puts stderr "procedure $existing_proc has not been altered"
}
if {[info exists env(spreadrccasc)] && [$existing_proc] eq "spreadrccasc"} {
puts stderr "procedure $existing_proc has been altered"
}
}
if {[info procs spreadrc_proc] eq "spreadrc_proc"} {
puts stderr "procedure spreadrc_proc exists"
}
if {[info procs spreadmod_proc] eq "spreadmod_proc"} {
puts stderr "procedure spreadmod_proc exists"
}
if {[info procs ModulesHelp] eq "ModulesHelp"} {
puts stderr "procedure ModulesHelp exists"
}
if {[info procs ModulesTest] eq "ModulesTest"} {
puts stderr "procedure ModulesTest exists"
}
if {[info procs ModulesDisplay] eq "ModulesDisplay"} {
puts stderr "procedure ModulesDisplay exists"
}
if {[info procs module-version] eq "module-version"} {
puts stderr "procedure module-version exists"
}
# define specific variables or override value in pre-existing variables
set spreadmod "yes"
set tcl_version "test"
array set spreadmod_array [list "yes" 1]
set tcl_platform(osVersion) "test"
lappend auto_path $env(TESTSUITEDIR)
set env(spreadmodcasc) "yes"
# define specific procs or override interpreter alias command
# override first proc defined
proc $existing_proc {args} {
return "spreadmodcasc"
}
proc spreadmod_proc {text} {
puts stderr "spreadmod_proc: $text"
}
proc ModulesHelp {} {
puts stderr "spreadmod"
}
proc ModulesTest {} {
puts stderr "spreadmod"
return 1
}
proc ModulesDisplay {} {
puts stderr "spreadmod"
}
proc module-version {args} {
puts stderr "spreadmod"
}
setenv testspreadrc "yes"
module load spreadrc/dir6/1.0
# test if specific or overridden pre-existing variables are still there
# after cascaded interpretation
if {![info exists spreadmod]} {
puts stderr "variable spreadmod has been reset"
}
if {$tcl_version ne "test"} {
puts stderr "variable tcl_version has been reset"
}
if {![array exists spreadmod_array]} {
puts stderr "array variable spreadmod_array has been reset"
}
if {$tcl_platform(osVersion) ne "test"} {
puts stderr "variable tcl_platform(osVersion) has been reset"
}
if {[lsearch -exact $auto_path $env(TESTSUITEDIR)] == -1} {
puts stderr "variable auto_path has been reset"
}
# test if specific or overridden interpreter alias command are still there
# after cascaded interpretation
# test if first proc defined has been altered
if {[info procs $existing_proc] ne $existing_proc} {
puts stderr "procedure $existing_proc does not exist"
# env variable spread across interpretation and even between interpreters
} elseif {[info exists env(spreadmodcasc)] && [$existing_proc] ne "spreadmodcasc"} {
puts stderr "procedure $existing_proc has been reset"
}
if {[info procs spreadmod_proc] ne "spreadmod_proc"} {
puts stderr "procedure spreadmod_proc has been reset"
}
if {[info procs ModulesHelp] ne "ModulesHelp"} {
puts stderr "procedure ModulesHelp has been reset"
}
if {[info procs ModulesTest] ne "ModulesTest"} {
puts stderr "procedure ModulesTest has been reset"
}
if {[info procs ModulesDisplay] ne "ModulesDisplay"} {
puts stderr "procedure ModulesDisplay has been reset"
}
if {[info procs module-version] ne "module-version"} {
puts stderr "procedure module-version has been reset"
}
|