setup-env.sh: make setup scripts work with set -u

- Add set -u to the setup-env.sh test script

- Refactor lines in setup-env.sh that tested potentially undefined
  variables to use the `[ -z ${var+x} ]` construct
This commit is contained in:
Todd Gamblin 2019-07-03 12:43:13 -07:00
parent 47e9f7aac9
commit 5686c2a544
2 changed files with 11 additions and 4 deletions

View File

@ -163,6 +163,9 @@ unuse() {
# Make sure no environment is active # Make sure no environment is active
unset SPACK_ENV unset SPACK_ENV
# fail with undefined variables
set -u
# Source setup-env.sh before tests # Source setup-env.sh before tests
. share/spack/setup-env.sh . share/spack/setup-env.sh

View File

@ -46,9 +46,12 @@ spack() {
emulate -L sh emulate -L sh
fi fi
# accumulate initial flags for main spack command # accumulate flags meant for the main spack command
# the loop condition is unreadable, but it means:
# while $1 is set (while there are arguments)
# and $1 starts with '-' (and the arguments are flags)
_sp_flags="" _sp_flags=""
while [ "${1#-}" != "${1}" ]; do while [ ! -z ${1+x} ] && [ "${1#-}" != "${1}" ]; do
_sp_flags="$_sp_flags $1" _sp_flags="$_sp_flags $1"
shift shift
done done
@ -62,8 +65,9 @@ spack() {
return return
fi fi
# set the subcommand if there is one (if $1 is set)
_sp_subcommand="" _sp_subcommand=""
if [ -n "$1" ]; then if [ ! -z ${1+x} ]; then
_sp_subcommand="$1" _sp_subcommand="$1"
shift shift
fi fi
@ -102,7 +106,7 @@ spack() {
case $_sp_arg in case $_sp_arg in
activate) activate)
_a="$@" _a="$@"
if [ -z "$1" ] || \ if [ -z ${1+x} ] || \
[ "${_a#*--sh}" != "$_a" ] || \ [ "${_a#*--sh}" != "$_a" ] || \
[ "${_a#*--csh}" != "$_a" ] || \ [ "${_a#*--csh}" != "$_a" ] || \
[ "${_a#*-h}" != "$_a" ]; [ "${_a#*-h}" != "$_a" ];