mirror of
https://github.com/envmodules/modules.git
synced 2026-06-10 00:56:30 +08:00
164 lines
5.3 KiB
Plaintext
164 lines
5.3 KiB
Plaintext
#%Module1.0
|
|
|
|
##############################################################################
|
|
# Modules Revision 3.0
|
|
# Providing a flexible user environment
|
|
#
|
|
# File: spread/%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 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
|
|
# overridden proc does not spread as interp is renewed when a command is overridden
|
|
} elseif {[info exists env(spreadcasccmd)] && [$existing_proc] eq "spreadcasccmd"} {
|
|
puts stderr "procedure $existing_proc has 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"
|
|
}
|
|
if {[info commands set] ne "set"} {
|
|
puts stderr "command set does not exist"
|
|
}
|
|
|
|
# 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(spread) "yes"
|
|
set env(spreadcasccmd) "yes"
|
|
|
|
# define specific procs or override interpreter alias command
|
|
# override first proc defined
|
|
proc $existing_proc {args} {
|
|
return "spreadcasccmd"
|
|
}
|
|
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"
|
|
}
|
|
# define proc to override interpreter initial command
|
|
proc set {args} {
|
|
if {[lsearch -exact [list ::env(LOADEDMODULES) ::env(_LMFILES_) ::env(__MODULES_LMPREREQ) ::env(__MODULES_LMTAG) ::env(testspreadrccmd) ::env(testspreadrc) ::env(testspreadrccmdsub) ::env(testspreadrcsub) ::env(testspreadcmd) ::env(testspreadcmd) ::env(testspreadcmdsub) vrerrlist] [lindex $args 0]] == -1} {
|
|
puts stderr "spread"
|
|
}
|
|
}
|
|
|
|
setenv testspreadcmd "yes"
|
|
|
|
module load spread/8.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"
|
|
}
|
|
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(spreadcasccmd)] && [$existing_proc] ne "spreadcasccmd"} {
|
|
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"
|
|
}
|
|
|