@@ -26,7 +26,7 @@ if [ ! -d assert.sh ]; then
2626fi
2727. assert.sh/assert.sh
2828
29- TEST_SHELLS=(" bash" " zsh" " fish" " ksh" " csh" )
29+ TEST_SHELLS=(" bash" " zsh" " fish" " ksh" " csh" " sh " )
3030SHELLS=$@
3131
3232for shell in ${SHELLS[@]} ; do
@@ -43,7 +43,11 @@ for shell in ${SHELLS[@]}; do
4343
4444 # TEST 1: Source Script and check Module Output
4545 expected_pattern=" .*EESSI has selected $EESSI_SOFTWARE_SUBDIR_OVERRIDE as the compatible CPU target for EESSI/$EESSI_VERSION .*"
46- assert_raises " $shell -c 'source init/lmod/$shell ' 2>&1 | grep -E \" ${expected_pattern} \" "
46+ if [ " $shell " = " csh" ]; then
47+ assert_raises " $shell -c 'source init/lmod/$shell ' 2>&1 | grep -E \" ${expected_pattern} \" "
48+ else
49+ assert_raises " $shell -c '. init/lmod/$shell ' 2>&1 | grep -E \" ${expected_pattern} \" "
50+ fi
4751
4852 # TEST 2: Check if module overviews first section is the loaded EESSI module
4953 if [ " $shell " = " csh" ]; then
@@ -53,7 +57,7 @@ for shell in ${SHELLS[@]}; do
5357 echo " source init/lmod/$shell " > ~ /.cshrc
5458 MODULE_SECTIONS=($( $shell -c " module ov" 2>&1 | grep -e ' ---' ) )
5559 else
56- MODULE_SECTIONS=($( $shell -c " source init/lmod/$shell >/dev/null 2>&1; module ov 2>&1 | grep -e '---'" ) )
60+ MODULE_SECTIONS=($( $shell -c " . init/lmod/$shell >/dev/null 2>&1; module ov 2>&1 | grep -e '---'" ) )
5761 fi
5862 PATTERN=" /cvmfs/software\.eessi\.io/versions/$EESSI_VERSION /software/linux/$EESSI_SOFTWARE_SUBDIR_OVERRIDE /modules/all"
5963 assert_raises ' echo "${MODULE_SECTIONS[1]}" | grep -E "$PATTERN"'
@@ -68,7 +72,7 @@ for shell in ${SHELLS[@]}; do
6872 echo " source init/lmod/$shell " > ~ /.cshrc
6973 command=" $shell -c 'module load EasyBuild/${EXPECTED_EASYBUILD_VERSION} ; eb --version' | tail -n 1 | awk '{print \$ 4}'"
7074 else
71- command=" $shell -c 'source init/lmod/$shell >/dev/null 2>&1; module load EasyBuild/${EXPECTED_EASYBUILD_VERSION} ; eb --version' | tail -n 1 | awk '{print \$ 4}'"
75+ command=" $shell -c '. init/lmod/$shell >/dev/null 2>&1; module load EasyBuild/${EXPECTED_EASYBUILD_VERSION} ; eb --version' | tail -n 1 | awk '{print \$ 4}'"
7276 fi
7377 assert " $command " " $EXPECTED_EASYBUILD_VERSION "
7478
@@ -77,7 +81,7 @@ for shell in ${SHELLS[@]}; do
7781 echo " source init/lmod/$shell " > ~ /.cshrc
7882 EASYBUILD_PATH=$( $shell -c " module load EasyBuild/${EXPECTED_EASYBUILD_VERSION} ; which eb" )
7983 else
80- EASYBUILD_PATH=$( $shell -c " source init/lmod/$shell 2>/dev/null; module load EasyBuild/${EXPECTED_EASYBUILD_VERSION} ; which eb" )
84+ EASYBUILD_PATH=$( $shell -c " . init/lmod/$shell 2>/dev/null; module load EasyBuild/${EXPECTED_EASYBUILD_VERSION} ; which eb" )
8185 fi
8286 # escape the dots in ${EASYBUILD_VERSION}
8387 PATTERN=" /cvmfs/software\.eessi\.io/versions/$EESSI_VERSION /software/linux/$EESSI_SOFTWARE_SUBDIR_OVERRIDE /software/EasyBuild/${EXPECTED_EASYBUILD_VERSION// ./ \\ .} /bin/eb"
@@ -97,8 +101,8 @@ for shell in ${SHELLS[@]}; do
97101 TEST_LMOD_SYSTEM_DEFAULT_MODULES=$( $shell -c ' set -x EESSI_DEFAULT_MODULES_APPEND append_module ; set -x EESSI_DEFAULT_MODULES_PREPEND prepend_module ; set -x EESSI_EXTRA_MODULEPATH .github/workflows/modules ; source init/lmod/' " $shell " ' 2>/dev/null; echo $LMOD_SYSTEM_DEFAULT_MODULES' )
98102 TEST_MODULEPATH=$( $shell -c ' set -x EESSI_DEFAULT_MODULES_APPEND append_module ; set -x EESSI_DEFAULT_MODULES_PREPEND prepend_module ; set -x EESSI_EXTRA_MODULEPATH .github/workflows/modules ; source init/lmod/' " $shell " ' 2>/dev/null; echo $MODULEPATH' )
99103 else
100- TEST_LMOD_SYSTEM_DEFAULT_MODULES=$( $shell -c ' export EESSI_DEFAULT_MODULES_APPEND=append_module ; export EESSI_DEFAULT_MODULES_PREPEND=prepend_module ; export EESSI_EXTRA_MODULEPATH=.github/workflows/modules ; source init/lmod/' " $shell " ' ; echo $LMOD_SYSTEM_DEFAULT_MODULES' )
101- TEST_MODULEPATH=$( $shell -c ' export EESSI_DEFAULT_MODULES_APPEND=append_module ; export EESSI_DEFAULT_MODULES_PREPEND=prepend_module ; export EESSI_EXTRA_MODULEPATH=.github/workflows/modules ; source init/lmod/' " $shell " ' 2>/dev/null; echo $MODULEPATH' )
104+ TEST_LMOD_SYSTEM_DEFAULT_MODULES=$( $shell -c ' export EESSI_DEFAULT_MODULES_APPEND=append_module ; export EESSI_DEFAULT_MODULES_PREPEND=prepend_module ; export EESSI_EXTRA_MODULEPATH=.github/workflows/modules ; . init/lmod/' " $shell " ' ; echo $LMOD_SYSTEM_DEFAULT_MODULES' )
105+ TEST_MODULEPATH=$( $shell -c ' export EESSI_DEFAULT_MODULES_APPEND=append_module ; export EESSI_DEFAULT_MODULES_PREPEND=prepend_module ; export EESSI_EXTRA_MODULEPATH=.github/workflows/modules ; . init/lmod/' " $shell " ' 2>/dev/null; echo $MODULEPATH' )
102106 fi
103107 LMOD_SYSTEM_DEFAULT_MODULES_PATTERN=' ^prepend_module:.*:append_module$'
104108 # echo "$TEST_LMOD_SYSTEM_DEFAULT_MODULES" AND "$LMOD_SYSTEM_DEFAULT_MODULES_PATTERN"
@@ -126,8 +130,8 @@ for shell in ${SHELLS[@]}; do
126130 TEST_EESSI_WITH_PURGE=$( $shell -c " source $LMOD_PKG /init/$shell 2>/dev/null ; source init/lmod/$shell 2>/dev/null" )
127131 TEST_EESSI_WITHOUT_PURGE=$( $shell -c " set -x EESSI_NO_MODULE_PURGE_ON_INIT 1 ; source $LMOD_PKG /init/$shell 2>/dev/null ; source init/lmod/$shell 2>/dev/null" )
128132 else
129- TEST_EESSI_WITH_PURGE=$( $shell -c " source $LMOD_PKG /init/$shell 2>/dev/null ; source init/lmod/$shell 2>/dev/null" )
130- TEST_EESSI_WITHOUT_PURGE=$( $shell -c " export EESSI_NO_MODULE_PURGE_ON_INIT=1 ; source $LMOD_PKG /init/$shell 2>/dev/null ; source init/lmod/$shell 2>/dev/null" )
133+ TEST_EESSI_WITH_PURGE=$( $shell -c " . $LMOD_PKG /init/$shell 2>/dev/null ; . init/lmod/$shell 2>/dev/null" )
134+ TEST_EESSI_WITHOUT_PURGE=$( $shell -c " export EESSI_NO_MODULE_PURGE_ON_INIT=1 ; . $LMOD_PKG /init/$shell 2>/dev/null ; . init/lmod/$shell 2>/dev/null" )
131135 fi
132136 # In the first case we should have the test and in the second case we shouldn't
133137 pattern=" Modules purged before initialising EESSI"
@@ -139,13 +143,18 @@ for shell in ${SHELLS[@]}; do
139143 fi
140144
141145 # Optional test 10, check if the prompt has been updated
142- if [ " $shell " = " bash" ] || [ " $shell " = " ksh" ] || [ " $shell " = " zsh" ]; then
146+ if [ " $shell " = " bash" ] || [ " $shell " = " ksh" ] || [ " $shell " = " zsh" ] || [ " $shell " = " sh " ] ; then
143147 # Typically this is a non-interactive shell, so manually unset PS1 and reset to a non-exported variable when testing
144- TEST_EESSI_PS1_UPDATE=$( $shell -c " unset PS1 ; PS1='$ ' ; source init/lmod/$shell 2>/dev/null ; echo \"\$ PS1\" " )
145- TEST_EESSI_NO_PS1_UPDATE=$( $shell -c " unset PS1 ; source init/lmod/$shell 2>/dev/null ; echo \"\$ PS1\" " )
148+ TEST_EESSI_PS1_UPDATE=$( $shell -c " unset PS1 ; PS1='$ ' ; . init/lmod/$shell 2>/dev/null ; echo \"\$ PS1\" " )
149+ TEST_EESSI_NO_PS1_UPDATE=$( $shell -c " unset PS1 ; . init/lmod/$shell 2>/dev/null ; echo \"\$ PS1\" " )
146150 pattern=" {EESSI/${EESSI_VERSION} } "
147151 assert_raises ' echo "$TEST_EESSI_PS1_UPDATE" | grep "$pattern"'
148152 assert_raises ' echo "$TEST_EESSI_NO_PS1_UPDATE" | grep "$pattern"' 1
153+ # Also check when we explicitly ask for it not to be updated
154+ TEST_EESSI_EXPLICIT_NO_PS1_UPDATE=$( $shell -c " unset PS1 ; PS1='test> ' ; export EESSI_MODULE_UPDATE_PS1=0 ; . init/lmod/$shell 2>/dev/null ; echo \"\$ PS1\" " )
155+ TEST_EESSI_EXPLICIT_NO_PS1_UPDATE_CALLED_TWICE=$( $shell -c " unset PS1 ; PS1='$ ' ; export EESSI_MODULE_UPDATE_PS1=0 ; . init/lmod/$shell 2>/dev/null ; . init/lmod/$shell 2>/dev/null ; echo \"\$ PS1\" " )
156+ assert_raises ' echo "$TEST_EESSI_EXPLICIT_NO_PS1_UPDATE" | grep "$pattern"' 1
157+ assert_raises ' echo "$TEST_EESSI_EXPLICIT_NO_PS1_UPDATE_CALLED_TWICE" | grep "$pattern"' 1
149158 fi
150159
151160 # End Test Suite
0 commit comments