|
2 | 2 | export LMOD_PAGER=cat |
3 | 3 |
|
4 | 4 | if [ -z ${EESSI_VERSION} ] || [ ! -d /cvmfs/software.eessi.io/versions/${EESSI_VERSION} ]; then |
5 | | - echo "\$EESSI_VERSION has to be set to a valid EESSI version." |
6 | | - exit 1 |
| 5 | + echo "\$EESSI_VERSION has to be set to a valid EESSI version." |
| 6 | + exit 1 |
7 | 7 | fi |
8 | 8 |
|
9 | 9 | if [ -z ${EXPECTED_EASYBUILD_VERSION} ]; then |
10 | | - echo "\$EXPECTED_EASYBUILD_VERSION has to be set to an EasyBuild version that is expected to be available in EESSI version ${EESSI_VERSION}." |
11 | | - exit 1 |
| 10 | + echo "\$EXPECTED_EASYBUILD_VERSION has to be set to an EasyBuild version that is expected to be available in EESSI version ${EESSI_VERSION}." |
| 11 | + exit 1 |
12 | 12 | fi |
13 | 13 |
|
14 | 14 | # initialize assert framework |
15 | 15 | if [ ! -d assert.sh ]; then |
16 | | - echo "assert.sh not cloned." |
17 | | - echo "" |
18 | | - echo "run \`git clone https://github.com/lehmannro/assert.sh.git\`" |
19 | | - exit 1 |
| 16 | + echo "assert.sh not cloned." |
| 17 | + echo "" |
| 18 | + echo "run \`git clone https://github.com/lehmannro/assert.sh.git\`" |
| 19 | + exit 1 |
20 | 20 | fi |
21 | 21 | . assert.sh/assert.sh |
22 | 22 |
|
23 | | -TEST_SHELLS=("bash" "zsh" "fish" "ksh") |
| 23 | +TEST_SHELLS=("bash" "zsh" "fish" "ksh" "csh") |
24 | 24 | SHELLS=$@ |
25 | 25 |
|
26 | 26 | for shell in ${SHELLS[@]}; do |
27 | | - echo = | awk 'NF += (OFS = $_) + 100' |
28 | | - echo RUNNING TESTS FOR SHELL: $shell |
29 | | - echo = | awk 'NF += (OFS = $_) + 100' |
| 27 | + echo = | awk 'NF += (OFS = $_) + 100' |
| 28 | + echo RUNNING TESTS FOR SHELL: $shell |
| 29 | + echo = | awk 'NF += (OFS = $_) + 100' |
30 | 30 | if [[ ! " ${TEST_SHELLS[*]} " =~ [[:space:]]${shell}[[:space:]] ]]; then |
31 | | - ### EXCEPTION FOR CSH ### |
32 | | - echo -e "\033[33mWe don't now how to test the shell '$shell', PRs are Welcome.\033[0m" |
| 31 | + ### EXCEPTION FOR CSH ### |
| 32 | + echo -e "\033[33mWe don't now how to test the shell '$shell', PRs are Welcome.\033[0m" |
33 | 33 | else |
34 | | - # TEST 1: Source Script and check Module Output |
35 | | - assert "$shell -c 'source init/lmod/$shell' 2>&1 " "Module for EESSI/$EESSI_VERSION loaded successfully" |
36 | | - # TEST 2: Check if module overviews first section is the loaded EESSI module |
37 | | - MODULE_SECTIONS=($($shell -c "source init/lmod/$shell 2>/dev/null; module ov 2>&1 | grep -e '---'")) |
38 | | - PATTERN="/cvmfs/software\.eessi\.io/versions/$EESSI_VERSION/software/linux/x86_64/(intel/haswell|amd/zen3)/modules/all" |
39 | | - assert_raises 'echo "${MODULE_SECTIONS[1]}" | grep -E "$PATTERN"' |
40 | | - # TEST 3: Check if module overviews second section is the EESSI init module |
41 | | - assert "echo ${MODULE_SECTIONS[4]}" "/cvmfs/software.eessi.io/versions/$EESSI_VERSION/init/modules" |
42 | | - # Test 4: Load EasyBuild module and check version |
43 | | - # eb --version outputs: "This is EasyBuild 5.1.1 (framework: 5.1.1, easyblocks: 5.1.1) on host ..." |
44 | | - command="$shell -c 'source init/lmod/$shell 2>/dev/null; module load EasyBuild/${EXPECTED_EASYBUILD_VERSION}; eb --version | cut -d \" \" -f4'" |
45 | | - assert "$command" "$EXPECTED_EASYBUILD_VERSION" |
46 | | - # Test 5: Load EasyBuild module and check path |
47 | | - EASYBUILD_PATH=$($shell -c "source init/lmod/$shell 2>/dev/null; module load EasyBuild/${EXPECTED_EASYBUILD_VERSION}; which eb") |
48 | | - # escape the dots in ${EASYBUILD_VERSION} |
49 | | - PATTERN="/cvmfs/software\.eessi\.io/versions/$EESSI_VERSION/software/linux/x86_64/(intel/haswell|amd/zen3)/software/EasyBuild/${EXPECTED_EASYBUILD_VERSION//./\\.}/bin/eb" |
50 | | - echo "$EASYBUILD_PATH" | grep -E "$PATTERN" |
51 | | - assert_raises 'echo "$EASYBUILD_PATH" | grep -E "$PATTERN"' |
52 | | - |
53 | | - #End Test Suite |
54 | | - assert_end "source_eessi_$shell" |
55 | | - fi |
56 | | -done |
| 34 | + # TEST 1: Source Script and check Module Output |
| 35 | + expected="Module for EESSI/$EESSI_VERSION loaded successfully" |
| 36 | + assert "$shell -c 'source init/lmod/$shell' 2>&1 " "${expected}" |
| 37 | + |
| 38 | + # TEST 2: Check if module overviews first section is the loaded EESSI module |
| 39 | + if [ "$shell" = "csh" ]; then |
| 40 | + # module is defined as alias, but aliases are only retained in interactive |
| 41 | + # shells we work around this by creating a .cshrc file (which sources the |
| 42 | + # init script), and then simply run the remaining commands |
| 43 | + echo "source init/lmod/$shell" > ~/.cshrc |
| 44 | + MODULE_SECTIONS=($($shell -c "module ov" 2>&1 | grep -e '---')) |
| 45 | + else |
| 46 | + MODULE_SECTIONS=($($shell -c "source init/lmod/$shell 2>/dev/null; module ov 2>&1 | grep -e '---'")) |
| 47 | + fi |
| 48 | + PATTERN="/cvmfs/software\.eessi\.io/versions/$EESSI_VERSION/software/linux/x86_64/(intel/haswell|amd/zen3)/modules/all" |
| 49 | + assert_raises 'echo "${MODULE_SECTIONS[1]}" | grep -E "$PATTERN"' |
| 50 | + |
| 51 | + # TEST 3: Check if module overviews second section is the EESSI init module |
| 52 | + assert "echo ${MODULE_SECTIONS[4]}" "/cvmfs/software.eessi.io/versions/$EESSI_VERSION/init/modules" |
57 | 53 |
|
| 54 | + # TEST 4: Load EasyBuild module and check version |
| 55 | + # eb --version outputs: "This is EasyBuild 5.1.1 (framework: 5.1.1, easyblocks: 5.1.1) on host ..." |
| 56 | + if [ "$shell" = "csh" ]; then |
| 57 | + echo "source init/lmod/$shell" > ~/.cshrc |
| 58 | + command="$shell -c 'module load EasyBuild/${EXPECTED_EASYBUILD_VERSION}; eb --version' | cut -d \" \" -f4" |
| 59 | + else |
| 60 | + command="$shell -c 'source init/lmod/$shell 2>/dev/null; module load EasyBuild/${EXPECTED_EASYBUILD_VERSION}; eb --version | cut -d \" \" -f4'" |
| 61 | + fi |
| 62 | + assert "$command" "$EXPECTED_EASYBUILD_VERSION" |
| 63 | + |
| 64 | + # TEST 5: Load EasyBuild module and check path |
| 65 | + if [ "$shell" = "csh" ]; then |
| 66 | + echo "source init/lmod/$shell" > ~/.cshrc |
| 67 | + EASYBUILD_PATH=$($shell -c "module load EasyBuild/${EXPECTED_EASYBUILD_VERSION}; which eb") |
| 68 | + else |
| 69 | + EASYBUILD_PATH=$($shell -c "source init/lmod/$shell 2>/dev/null; module load EasyBuild/${EXPECTED_EASYBUILD_VERSION}; which eb") |
| 70 | + fi |
| 71 | + # escape the dots in ${EASYBUILD_VERSION} |
| 72 | + PATTERN="/cvmfs/software\.eessi\.io/versions/$EESSI_VERSION/software/linux/x86_64/(intel/haswell|amd/zen3)/software/EasyBuild/${EXPECTED_EASYBUILD_VERSION//./\\.}/bin/eb" |
| 73 | + echo "$EASYBUILD_PATH" | grep -E "$PATTERN" |
| 74 | + assert_raises 'echo "$EASYBUILD_PATH" | grep -E "$PATTERN"' |
| 75 | + |
| 76 | + # End Test Suite |
| 77 | + assert_end "source_eessi_$shell" |
| 78 | + fi |
| 79 | +done |
58 | 80 |
|
59 | 81 | # RESET PAGER |
60 | 82 | export LMOD_PAGER= |
0 commit comments