ts: test spider against modpath entry with variable ref

Signed-off-by: Xavier Delaruelle <xavier.delaruelle@cea.fr>
This commit is contained in:
Xavier Delaruelle
2025-02-05 06:27:56 +01:00
parent 4c44277191
commit 596c0c5fa3
3 changed files with 83 additions and 0 deletions

View File

@@ -499,4 +499,9 @@ Specific impact
- FUTURE: there may have room for optimization here
* As environment variable defined by modulefile commands like ``setenv`` are
set to an empty value during scan evaluation, if a modulepath entry contains
a reference to such environment variable, it will not match its expecting
value.
.. vim:set tabstop=2 shiftwidth=2 expandtab autoindent:

View File

@@ -19,5 +19,27 @@ if {[info exists env(TESTSUITE_SPIDER_MODPATH1)]} {
remove_modpath2 {
remove-path MODULEPATH $env(TESTSUITEDIR)/modulefiles.spider2
}
use_append_modpath_extref1 {
module use -a $env(TESTSUITEDIR)/modulefiles.spid\$TESTSUITE_SPIDER_EXTREF
}
use_append_modpath_inref1 {
setenv TESTSUITE_SPIDER_INREF unk
module use -a $env(TESTSUITEDIR)/modulefiles.spid\$TESTSUITE_SPIDER_INREF
}
use_append_modpath_inref2 {
setenv TESTSUITE_SPIDER_INREF er2
module use -a $env(TESTSUITEDIR)/modulefiles.spid\$TESTSUITE_SPIDER_INREF
}
prepend_modpath_extref1 {
prepend-path MODULEPATH $env(TESTSUITEDIR)/modulefiles.spid\$TESTSUITE_SPIDER_EXTREF
}
prepend_modpath_inref1 {
setenv TESTSUITE_SPIDER_INREF unk
prepend-path MODULEPATH $env(TESTSUITEDIR)/modulefiles.spid\$TESTSUITE_SPIDER_INREF
}
prepend_modpath_inref2 {
setenv TESTSUITE_SPIDER_INREF er2
prepend-path MODULEPATH $env(TESTSUITEDIR)/modulefiles.spid\$TESTSUITE_SPIDER_INREF
}
}
}

View File

@@ -182,6 +182,62 @@ moda/2"
}
# modulepath entry with environment variable reference
setenv_var TESTSUITE_SPIDER_MODPATH1 use_append_modpath_extref1
set tserr "$modpath.spider1:
moda/1
moda/2
$modpath.spider2:
modb/1
modb/2
$modpath.spider3:
modc/1
modc/2"
set tserr_unkref "$modpath.spider1:
moda/1
moda/2"
setenv_var TESTSUITE_SPIDER_EXTREF er2
testouterr_cmd sh {spider -t} OK $tserr
setenv_var TESTSUITE_SPIDER_EXTREF bad
testouterr_cmd sh {spider -t} OK $tserr_unkref
unsetenv_var TESTSUITE_SPIDER_EXTREF
testouterr_cmd sh {spider -t} OK $tserr_unkref
setenv_var TESTSUITE_SPIDER_MODPATH1 use_append_modpath_inref1
testouterr_cmd sh {spider -t} OK $tserr_unkref
setenv_var TESTSUITE_SPIDER_MODPATH1 use_append_modpath_inref2
# setenv is not performed on env variable during scan evaluation
testouterr_cmd sh {spider -t} OK $tserr_unkref
setenv_var TESTSUITE_SPIDER_MODPATH1 prepend_modpath_extref1
setenv_var TESTSUITE_SPIDER_EXTREF er2
testouterr_cmd sh {spider -t} OK $tserr
setenv_var TESTSUITE_SPIDER_EXTREF bad
testouterr_cmd sh {spider -t} OK $tserr_unkref
unsetenv_var TESTSUITE_SPIDER_EXTREF
testouterr_cmd sh {spider -t} OK $tserr_unkref
setenv_var TESTSUITE_SPIDER_MODPATH1 prepend_modpath_inref1
testouterr_cmd sh {spider -t} OK $tserr_unkref
setenv_var TESTSUITE_SPIDER_MODPATH1 prepend_modpath_inref2
# setenv is not performed on env variable during scan evaluation
testouterr_cmd sh {spider -t} OK $tserr_unkref
setenv_var MODULEPATH $modpath.spid\$TESTSUITE_SPIDER_EXTREF
setenv_var TESTSUITE_SPIDER_MODPATH1 use_append_modpath2
setenv_var TESTSUITE_SPIDER_EXTREF er1
testouterr_cmd sh {spider -t} OK $tserr
setenv_var TESTSUITE_SPIDER_EXTREF bad
testouterr_cmd sh {spider -t} OK {}
unsetenv_var TESTSUITE_SPIDER_EXTREF
testouterr_cmd sh {spider -t} OK {}
#
# Cleanup
#