diff --git a/testsuite/modulefiles.4/tag/.modulerc b/testsuite/modulefiles.4/tag/.modulerc index 6381938d..328a46b8 100644 --- a/testsuite/modulefiles.4/tag/.modulerc +++ b/testsuite/modulefiles.4/tag/.modulerc @@ -142,5 +142,21 @@ if {[info exists env(TESTSUITE_FPMOD_TAG)]} { module-tag foo [file dirname $ModulesCurrentModulefile]/1.0 module-tag bar [file dirname $ModulesCurrentModulefile]/1.0 } + sticky1 { + module-tag sticky [file dirname $ModulesCurrentModulefile]/1.0 + module-virtual tag/1.1 ./1.0 + } + sticky2 { + module-tag super-sticky [file dirname $ModulesCurrentModulefile]/1.0 + module-virtual tag/1.1 ./1.0 + } + sticky3 { + module-tag sticky [file dirname $ModulesCurrentModulefile] + module-virtual tag/1.1 ./1.0 + } + sticky4 { + module-tag super-sticky [file dirname $ModulesCurrentModulefile] + module-virtual tag/1.1 ./1.0 + } } } diff --git a/testsuite/modulefiles.4/tag/2.1 b/testsuite/modulefiles.4/tag/2.1 new file mode 100644 index 00000000..1c148cdd --- /dev/null +++ b/testsuite/modulefiles.4/tag/2.1 @@ -0,0 +1 @@ +#%Module diff --git a/testsuite/modules.50-cmds/441-module-tag-full-path.exp b/testsuite/modules.50-cmds/441-module-tag-full-path.exp index 5b09a181..1bdb92ca 100644 --- a/testsuite/modules.50-cmds/441-module-tag-full-path.exp +++ b/testsuite/modules.50-cmds/441-module-tag-full-path.exp @@ -42,7 +42,8 @@ setenv_var TESTSUITE_FPMOD_TAG thisloc1 set tserr "$mp: tag/1.0 tag/1.2.sub/1.0 -tag/2.0" +tag/2.0 +tag/2.1" testouterr_cmd sh {avail -t tag} OK $tserr set tserr "$mp: tag/1.0 " diff --git a/testsuite/modules.50-cmds/463-sticky-full-path.exp b/testsuite/modules.50-cmds/463-sticky-full-path.exp new file mode 100644 index 00000000..7c8fe1e3 --- /dev/null +++ b/testsuite/modules.50-cmds/463-sticky-full-path.exp @@ -0,0 +1,219 @@ +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: modules.50-cmds/%M% +# Revision: %I% +# First Edition: 2023/05/29 +# Last Mod.: %U%, %G% +# +# Authors: Xavier Delaruelle, xavier.delaruelle@cea.fr +# +# Description: Testuite testsequence +# Command: load, unload, switch, restore +# Modulefiles: +# Sub-Command: +# +# Comment: %C{ +# Check sticky/super-sticky modules when tag is set over +# full path module designation +# }C% +# +############################################################################## + +skip_if_quick_mode + +set mp $modpath.4 +set mpre $modpathre.4 +setenv_path_var MODULEPATH $mp + + +# +# load +# + +setenv_var TESTSUITE_FPMOD_TAG sticky1 +set ans [list] +lappend ans [list set _LMFILES_ $mp/tag/1.0] +lappend ans [list set LOADEDMODULES tag/1.0] +lappend ans [list set __MODULES_LMTAG tag/1.0&sticky] +set tserr [msg_load {tag/1.0 }] +testouterr_cmd sh {load -v tag/1.0} $ans $tserr + +set ans [list] +lappend ans [list set _LMFILES_ $mp/tag/1.0] +lappend ans [list set LOADEDMODULES tag/1.1] +lappend ans [list set __MODULES_LMTAG tag/1.1&sticky] +set tserr [msg_load {tag/1.1 }] +testouterr_cmd sh {load -v tag/1.1} $ans $tserr + + +setenv_var TESTSUITE_FPMOD_TAG sticky2 +set ans [list] +lappend ans [list set _LMFILES_ $mp/tag/1.0] +lappend ans [list set LOADEDMODULES tag/1.0] +lappend ans [list set __MODULES_LMTAG tag/1.0&super-sticky] +set tserr [msg_load {tag/1.0 }] +testouterr_cmd sh {load -v tag/1.0} $ans $tserr + +set ans [list] +lappend ans [list set _LMFILES_ $mp/tag/1.0] +lappend ans [list set LOADEDMODULES tag/1.1] +lappend ans [list set __MODULES_LMTAG tag/1.1&super-sticky] +set tserr [msg_load {tag/1.1 }] +testouterr_cmd sh {load -v tag/1.1} $ans $tserr + + +# +# unload +# + +setenv_var TESTSUITE_FPMOD_TAG sticky1 + +setenv_loaded_module [list tag/1.0] [list $mp/tag/1.0] +setenv_var __MODULES_LMTAG tag/1.0&sticky +set tserr [msg_unload {tag/1.0 } $err_stickyunload] +testouterr_cmd sh {unload -v tag/1.0} ERR $tserr + +# tag not recorded in environment +unsetenv_var __MODULES_LMTAG +set ans [list] +lappend ans [list unset _LMFILES_] +lappend ans [list unset LOADEDMODULES] +set tserr [msg_unload {tag/1.0}] +testouterr_cmd sh {unload -v tag/1.0} $ans $tserr + + +setenv_var TESTSUITE_FPMOD_TAG sticky2 + +setenv_loaded_module [list tag/1.0] [list $mp/tag/1.0] +setenv_var __MODULES_LMTAG tag/1.0&super-sticky +set tserr [msg_unload {tag/1.0 } $err_superstickyunload] +testouterr_cmd sh {unload -v tag/1.0} ERR $tserr + +# tag not recorded in environment +unsetenv_var __MODULES_LMTAG +set ans [list] +lappend ans [list unset _LMFILES_] +lappend ans [list unset LOADEDMODULES] +set tserr [msg_unload {tag/1.0}] +testouterr_cmd sh {unload -v tag/1.0} $ans $tserr + + +# +# switch +# + +setenv_var TESTSUITE_FPMOD_TAG sticky1 +setenv_loaded_module [list tag/1.0] [list $mp/tag/1.0] +setenv_var __MODULES_LMTAG tag/1.0&sticky +set tserr [msg_switch {tag/1.0 } tag/2.0 $err_stickyunload] +testouterr_cmd sh {switch tag/1.0 tag/2.0} ERR $tserr + + +setenv_var TESTSUITE_FPMOD_TAG sticky2 +setenv_loaded_module [list tag/1.0] [list $mp/tag/1.0] +setenv_var __MODULES_LMTAG tag/1.0&super-sticky +set tserr [msg_switch {tag/1.0 } tag/2.0 $err_superstickyunload] +testouterr_cmd sh {switch tag/1.0 tag/2.0} ERR $tserr + + +setenv_var TESTSUITE_FPMOD_TAG sticky3 + +setenv_loaded_module [list tag/1.0] [list $mp/tag/1.0] +setenv_var __MODULES_LMTAG tag/1.0&sticky +set tserr [msg_switch {tag/1.0 } foo/1.0 $err_stickyunload] +testouterr_cmd sh {switch tag/1.0 foo/1.0} ERR $tserr + +set tserr [msg_switch {tag/1.0 } foo/2.0 $err_stickyunload] +testouterr_cmd sh {switch tag/1.0 foo/2.0} ERR $tserr + +setenv_loaded_module [list tag/1.1] [list $mp/tag/1.0] +setenv_var __MODULES_LMTAG tag/1.1&sticky +set tserr [msg_switch {tag/1.1 } foo/1.0 $err_stickyunload] +testouterr_cmd sh {switch tag/1.1 foo/1.0} ERR $tserr + +set tserr [msg_switch {tag/1.1 } foo/2.0 $err_stickyunload] +testouterr_cmd sh {switch tag/1.1 foo/2.0} ERR $tserr + + +setenv_var TESTSUITE_FPMOD_TAG sticky4 + +setenv_loaded_module [list tag/1.0] [list $mp/tag/1.0] +setenv_var __MODULES_LMTAG tag/1.0&super-sticky +set tserr [msg_switch {tag/1.0 } foo/1.0 $err_superstickyunload] +testouterr_cmd sh {switch tag/1.0 foo/1.0} ERR $tserr + +set tserr [msg_switch {tag/1.0 } foo/2.0 $err_superstickyunload] +testouterr_cmd sh {switch tag/1.0 foo/2.0} ERR $tserr + +setenv_loaded_module [list tag/1.1] [list $mp/tag/1.0] +setenv_var __MODULES_LMTAG tag/1.1&super-sticky +set tserr [msg_switch {tag/1.1 } foo/1.0 $err_superstickyunload] +testouterr_cmd sh {switch tag/1.1 foo/1.0} ERR $tserr + +set tserr [msg_switch {tag/1.1 } foo/2.0 $err_superstickyunload] +testouterr_cmd sh {switch tag/1.1 foo/2.0} ERR $tserr + + +# +# restore +# + +setenv_var TESTSUITE_FPMOD_TAG sticky1 +setenv_loaded_module [list tag/1.0] [list $mp/tag/1.0] +setenv_var __MODULES_LMTAG tag/1.0&sticky +setenv_var __MODULES_LMINIT "module use $mp:module load tag/2.0" + +set ans [list] +lappend ans [list set _LMFILES_ $mp/tag/2.0] +lappend ans [list set LOADEDMODULES tag/2.0] +lappend ans [list unset __MODULES_LMTAG] +set tserr [msg_unload {tag/1.0 }]\n[msg_load tag/2.0] +testouterr_cmd sh {restore __init__} $ans $tserr + + +setenv_var TESTSUITE_FPMOD_TAG sticky2 +setenv_loaded_module [list tag/1.0] [list $mp/tag/1.0] +setenv_var __MODULES_LMTAG tag/1.0&super-sticky +setenv_var __MODULES_LMINIT "module use $mp:module load tag/2.0" + +set ans [list] +lappend ans [list set _LMFILES_ $mp/tag/1.0:$mp/tag/2.0] +lappend ans [list set LOADEDMODULES tag/1.0:tag/2.0] +lappend ans [list ERR] +set tserr [msg_unload {tag/1.0 } $err_superstickyunload]\n\n[msg_load tag/2.0] + +testouterr_cmd sh {restore __init__} $ans $tserr + +setenv_var TESTSUITE_FPMOD_TAG sticky4 +setenv_loaded_module [list tag/1.0] [list $mp/tag/1.0] +setenv_var __MODULES_LMTAG tag/1.0&super-sticky +setenv_var __MODULES_LMINIT "module use $mp:module load --tag=super-sticky tag/2.0" + +set ans [list] +lappend ans [list set _LMFILES_ $mp/tag/1.0:$mp/tag/2.0] +lappend ans [list set LOADEDMODULES tag/1.0:tag/2.0] +lappend ans [list set __MODULES_LMEXTRATAG tag/2.0&super-sticky] +lappend ans [list set __MODULES_LMTAG tag/1.0&super-sticky:tag/2.0&super-sticky] +lappend ans [list ERR] +set tserr [msg_unload {tag/1.0 } $err_superstickyunload]\n\n[msg_load {tag/2.0 }] +testouterr_cmd sh {restore __init__} $ans $tserr + +set ans [list] +lappend ans [list set _LMFILES_ $mp/tag/1.0:$mp/tag/2.0] +lappend ans [list set LOADEDMODULES tag/1.1:tag/2.0] +lappend ans [list set __MODULES_LMEXTRATAG tag/2.0&super-sticky] +lappend ans [list set __MODULES_LMTAG tag/1.1&super-sticky:tag/2.0&super-sticky] +lappend ans [list ERR] +setenv_loaded_module [list tag/1.1] [list $mp/tag/1.0] +setenv_var __MODULES_LMTAG tag/1.1&super-sticky +set tserr [msg_unload {tag/1.1 } $err_superstickyunload]\n\n[msg_load {tag/2.0 }] +testouterr_cmd sh {restore __init__} $ans $tserr + + +# +# Cleanup +# + +reset_test_env