install_test_sh (modules-5.1.1.tar.bz2) | : | install_test_sh (modules-5.2.0.tar.bz2) | ||
---|---|---|---|---|
#!/bin/sh | #!/bin/sh | |||
# | # | |||
# INSTALL_TEST_SH, sh-kind test launcher for install non-reg suite | # INSTALL_TEST_SH, sh-kind test launcher for install non-reg suite | |||
# Copyright (C) 2017-2021 Xavier Delaruelle | # Copyright (C) 2017-2022 Xavier Delaruelle | |||
# | # | |||
# This program is free software: you can redistribute it and/or modify | # This program is free software: you can redistribute it and/or modify | |||
# it under the terms of the GNU General Public License as published by | # it under the terms of the GNU General Public License as published by | |||
# the Free Software Foundation, either version 2 of the License, or | # the Free Software Foundation, either version 2 of the License, or | |||
# (at your option) any later version. | # (at your option) any later version. | |||
# | # | |||
# This program is distributed in the hope that it will be useful, | # This program is distributed in the hope that it will be useful, | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
# GNU General Public License for more details. | # GNU General Public License for more details. | |||
# | # | |||
# You should have received a copy of the GNU General Public License | # You should have received a copy of the GNU General Public License | |||
# along with this program. If not, see <http://www.gnu.org/licenses/>. | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
########################################################################## | ########################################################################## | |||
progpath=$0 | progpath=$0 | |||
progdir=$(dirname $progpath) | progdir=$(dirname "$progpath") | |||
[ -z "$progdir" ] && progdir='.' | [ -z "$progdir" ] && progdir='.' | |||
ret=0 | ret=0 | |||
# print message on stderr then exit | # print message on stderr then exit | |||
echo_error() { | echo_error() { | |||
echo -e "ERROR: $1" >&2 | echo -e "ERROR: $1" >&2 | |||
exit 1 | exit 1 | |||
} | } | |||
if [ $# -lt 4 ]; then | if [ $# -lt 4 ]; then | |||
skipping to change at line 46 | skipping to change at line 46 | |||
initfile=$1 | initfile=$1 | |||
shift | shift | |||
mode=$1 | mode=$1 | |||
shift | shift | |||
sh=$1 | sh=$1 | |||
shift | shift | |||
cmdlist=${@} | cmdlist=${@} | |||
# get shell kind and options for sublaunch | # get shell kind and options for sublaunch | |||
shname=$(basename $sh) | shname=$(basename "$sh") | |||
if [ "$shname" = 'ksh93' ]; then | if [ "$shname" = 'ksh93' ]; then | |||
shname='ksh' | shname='ksh' | |||
fi | fi | |||
case "$shname" in | case "$shname" in | |||
bash|ksh|zsh) | bash|ksh|zsh) | |||
shkind='sh' | shkind='sh' | |||
;; | ;; | |||
tcsh) | tcsh) | |||
shkind='csh' | shkind='csh' | |||
;; | ;; | |||
skipping to change at line 70 | skipping to change at line 70 | |||
case "$shkind" in | case "$shkind" in | |||
# ignore global csh system init file to avoid side effect | # ignore global csh system init file to avoid side effect | |||
csh) | csh) | |||
shopts='-f' | shopts='-f' | |||
;; | ;; | |||
*) | *) | |||
shopts='' | shopts='' | |||
esac | esac | |||
# init module via autoinit cmd if modulecmd.tcl is initfile | # init module via autoinit cmd if modulecmd.tcl is initfile | |||
if [ "$(basename $initfile)" = 'modulecmd.tcl' ]; then | if [ "$(basename "${initfile}")" = 'modulecmd.tcl' ]; then | |||
autoinit=0 | autoinit=0 | |||
else | else | |||
autoinit=1 | autoinit=1 | |||
fi | fi | |||
if [ $autoinit -eq 0 -a ! -x $initfile ]; then | if [ $autoinit -eq 0 ] && [ ! -x "$initfile" ]; then | |||
echo_error "Cannot execute $initfile" | echo_error "Cannot execute $initfile" | |||
elif [ $autoinit -ne 0 -a ! -r $initfile ]; then | elif [ $autoinit -ne 0 ] && [ ! -r "$initfile" ]; then | |||
echo_error "Cannot read $initfile" | echo_error "Cannot read $initfile" | |||
fi | fi | |||
# source module init file if first step of given mode | # source module init file if first step of given mode | |||
if [ "$mode" = 'top' -o "$mode" = 'sub' -o "$mode" = 'subsub' ]; then | if [ "$mode" = 'top' ] || [ "$mode" = 'sub' ] || [ "$mode" = 'subsub' ]; then | |||
if [ $autoinit -eq 0 ]; then | if [ $autoinit -eq 0 ]; then | |||
eval "$($initfile $shname autoinit)" | eval "$("$initfile" $shname autoinit)" | |||
else | else | |||
. $initfile | . "$initfile" | |||
fi | fi | |||
fi | fi | |||
# execute command list or perform recursive call | # execute command list or perform recursive call | |||
case "$mode" in | case "$mode" in | |||
top|launch) | top|launch) | |||
# enable alias resolution on bash for tests | # enable alias resolution on bash for tests | |||
if [ "$shname" = 'bash' ]; then | if [ "$shname" = 'bash' ]; then | |||
shopt -s expand_aliases | shopt -s expand_aliases | |||
# enable word splitting for the below loop on zsh | # enable word splitting for the below loop on zsh | |||
elif [ "$shname" = 'zsh' ]; then | elif [ "$shname" = 'zsh' ]; then | |||
setopt sh_word_split | setopt sh_word_split | |||
fi | fi | |||
IFS=';' | IFS=';' | |||
for cmd in ${cmdlist}; do | for cmd in ${cmdlist}; do | |||
unset IFS | unset IFS | |||
eval $cmd | eval "$cmd" | |||
ret=$(($ret+$?)) | ret=$(($ret+$?)) | |||
IFS=';' | IFS=';' | |||
done | done | |||
unset IFS | unset IFS | |||
;; | ;; | |||
sub|sublaunch) | sub|sublaunch) | |||
$sh $shopts $progdir/install_test_${shkind} $initfile launch $sh "$cmdlist " | $sh $shopts $progdir/install_test_${shkind} "$initfile" launch "$sh" "$cmd list" | |||
ret=$? | ret=$? | |||
;; | ;; | |||
subsub) | subsub) | |||
$sh $shopts $progdir/install_test_${shkind} $initfile sublaunch $sh "$cmdl ist" | $sh $shopts $progdir/install_test_${shkind} "$initfile" sublaunch "$sh" "$ cmdlist" | |||
ret=$? | ret=$? | |||
;; | ;; | |||
*) | *) | |||
echo_error "Unrecognized mode option. Valid mode are 'top', 'sub', 'subsub '" | echo_error "Unrecognized mode option. Valid mode are 'top', 'sub', 'subsub '" | |||
esac | esac | |||
# throw command exit code | # throw command exit code | |||
exit $ret | exit $ret | |||
# vim:set tabstop=3 shiftwidth=3 expandtab autoindent: | # vim:set tabstop=3 shiftwidth=3 expandtab autoindent: | |||
End of changes. 12 change blocks. | ||||
12 lines changed or deleted | 12 lines changed or added |