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
|
#%Module1.0
##############################################################################
# Modules Revision 3.0
# Providing a flexible user environment
#
# File: spread/%M%
# Revision: %I%
# First Edition: 2017/06/21
# 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 modulefile interpretation to another one when these
# interpretations are cascaded.
# }C%
#
##############################################################################
# test if specific or overridden pre-existing variables have spread here
if {[info exists spread]} {
puts stderr "variable spread exists"
}
if {$tcl_version eq "test"} {
puts stderr "variable tcl_version equals test"
}
if {[array exists spread_array]} {
puts stderr "array variable spread_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
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
} elseif {[info exists env(spreadcasc)] && [$existing_proc] ne "spreadcasc"} {
puts stderr "procedure $existing_proc has not been altered"
}
if {[info procs spread_proc] eq "spread_proc"} {
puts stderr "procedure spread_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 spread "yes"
set tcl_version "test"
array set spread_array [list "yes" 1]
set tcl_platform(osVersion) "test"
lappend auto_path $env(TESTSUITEDIR)
set env(spreadcasc) "yes"
# define specific procs or override interpreter alias command
# override first proc defined
proc $existing_proc {args} {
return "spreadcasc"
}
proc spread_proc {text} {
puts stderr "spread_proc: $text"
}
proc ModulesHelp {} {
puts stderr "spread"
}
proc ModulesTest {} {
puts stderr "spread"
return 1
}
proc ModulesDisplay {} {
puts stderr "spread"
}
proc module-version {args} {
puts stderr "spread"
}
setenv testspread "yes"
module load spread/6.0
# test if specific or overridden pre-existing variables are still there
# after cascaded interpretation
if {![info exists spread]} {
puts stderr "variable spread has been reset"
}
if {$tcl_version ne "test"} {
puts stderr "variable tcl_version has been reset"
}
if {![array exists spread_array]} {
puts stderr "array variable spread_array has been reset"
}
if {$tcl_platform(osVersion) ne "test"} {
puts stderr "variable tcl_platform(osVersion) 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(spreadcasc)] && [$existing_proc] ne "spreadcasc"} {
puts stderr "procedure $existing_proc has been reset"
}
if {[info procs spread_proc] ne "spread_proc"} {
puts stderr "procedure spread_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"
}
|