Fix most shell hygiene issues found by shellcheck

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
This commit is contained in:
Anders Kaseorg
2016-10-30 02:05:31 -04:00
committed by John Hood
parent 3b21cd2425
commit 8a8f2b29ca
20 changed files with 144 additions and 115 deletions
+4 -3
View File
@@ -1,10 +1,11 @@
#!/bin/sh
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 baseline variant different
e2e-test "$0" baseline variant different
exit
fi
@@ -22,5 +23,5 @@ case $1 in
baseline|variant)
baseline;;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
+4 -3
View File
@@ -1,10 +1,11 @@
#!/bin/sh
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 baseline direct variant verify same
e2e-test "$0" baseline direct variant verify same
exit
fi
@@ -22,5 +23,5 @@ case $1 in
baseline|direct|variant)
baseline;;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
+28 -19
View File
@@ -19,11 +19,11 @@ dump_logs()
{
dir=$1
shift
testname=$(basename $dir .d)
testname=$(basename "$dir" .d)
for logfile in $dir/*.tmux.log; do
printf "travis_fold:start:%s-%s\n" $testname $(basename $logfile)
cat $logfile
printf "travis_fold:end:%s-%s\n" $testname $(basename $logfile)
printf "travis_fold:start:%s-%s\n" "$testname" "$(basename "$logfile")"
cat "$logfile"
printf "travis_fold:end:%s-%s\n" "$testname" "$(basename "$logfile")"
done
}
@@ -51,7 +51,7 @@ test_exitstatus()
status=$1
shift
error "$@"
exit $status
exit "$status"
}
@@ -67,8 +67,8 @@ tmux_check()
version_major=${version%%.*}
version_minor=${version##*.}
# need version 1.8 for capture-pane
if [ $version_major -lt 1 ] ||
[ $version_major -eq 1 -a $version_minor -lt 8 ]; then
if [ "$version_major" -lt 1 ] ||
{ [ "$version_major" -eq 1 ] && [ "$version_minor" -lt 8 ]; }; then
error "tmux version %s too old\n" "$version"
return 1
fi
@@ -89,7 +89,7 @@ ssh_localhost_check()
# on verbosity and log stderr.
mosh_client()
{
if [ -z "$MOSH_CLIENT" -o -z "$MOSH_E2E_TEST" ]; then
if [ -z "$MOSH_CLIENT" ] || [ -z "$MOSH_E2E_TEST" ]; then
test_error "mosh_client: variables missing\n"
fi
exec 2> "${MOSH_E2E_TEST}.client.stderr"
@@ -98,7 +98,7 @@ mosh_client()
mosh_server()
{
if [ -z "$MOSH_SERVER" -o -z "$MOSH_E2E_TEST" ]; then
if [ -z "$MOSH_SERVER" ] || [ -z "$MOSH_E2E_TEST" ]; then
test_error "mosh_server: variables missing\n"
fi
exec 2> "${MOSH_E2E_TEST}.server.stderr"
@@ -109,9 +109,9 @@ mosh_server()
# Set up environment
if [ -z "$srcdir" ]; then
: ${srcdir:=$PWD}
srcdir=$PWD
else
srcdir="$(cd $srcdir && pwd)"
srcdir="$(cd "$srcdir" && pwd)"
if [ $? -ne 0 ]; then
error "can't cd to srcdir: %s\n" "$srcdir"
exit 99
@@ -119,7 +119,7 @@ else
fi
# Wrappers.
case "$(basename $0)" in
case "$(basename "$0")" in
mosh-client)
mosh_client "$@"
exit
@@ -145,14 +145,21 @@ test_name=$1
shift
test_args=$@
# XXX could use AM testsubdir macro instead
test_dir=$(basename ${test_name}).d
test_dir=$(basename "${test_name}").d
test_script="${test_name}"
rm -rf "${test_dir}"
mkdir "${test_dir}"
trap 'rv=$?; if test $rv -ne 0; then dump_logs '"$test_dir $test_args"'; fi; exit $rv' EXIT
on_exit() {
rv=$?
if test $rv -ne 0; then
dump_logs "$test_dir" $test_args
fi
exit $rv
}
trap on_exit EXIT
# Set up tests to run.
server_tests=
@@ -170,13 +177,15 @@ for i in $test_args; do
post)
post=1;;
mosh-args)
mosh_args=$(${test_script} mosh-args);;
mosh_args=$("${test_script}" mosh-args);;
client-args)
export MOSH_CLIENT_ARGS=$(${test_script} client-args);;
MOSH_CLIENT_ARGS=$("${test_script}" client-args)
export MOSH_CLIENT_ARGS;;
server-args)
export MOSH_SERVER_ARGS=$(${test_script} server-args);;
MOSH_SERVER_ARGS=$("${test_script}" server-args)
export MOSH_SERVER_ARGS;;
*)
error "unknown test type argument %s", $i
error "unknown test type argument %s", "$i"
exit 99
;;
esac
@@ -225,7 +234,7 @@ for run in $server_tests; do
|| [ ! -s "${test_dir}/${run}.exitstatus" ]; then
test_error "server harness failure on test %s\n" "$run"
fi
read server_rv < "${test_dir}/${run}.exitstatus"
read -r server_rv < "${test_dir}/${run}.exitstatus"
if [ "$server_rv" -ne 0 ]; then
test_error "server harness exited with status %s\n" "$server_rv"
fi
+10 -5
View File
@@ -13,9 +13,14 @@ if [ $# -lt 2 ]; then
fi
testname=$1
shift
rm -f $testname.capture $testname.exitstatus
rm -f "$testname.capture" "$testname.exitstatus"
trap ":" TERM HUP QUIT # If the session closes on us, let the test we're running drive.
trap 'rv=$?; echo $rv > $testname.exitstatus; exit $rv' EXIT
on_exit() {
rv=$?
echo $rv > "$testname.exitstatus"
exit $rv
}
trap on_exit EXIT
# check for tmux
if [ -z "$TMUX_PANE" ]; then
printf "not running under tmux\n" >&2
@@ -29,7 +34,7 @@ sleep 1
printf "@@@ server complete @@@" >&2
i=0
while [ $i -lt 60 ]; do
if grep -q "@@@ server complete @@@" $testname.tmux.log; then
if grep -q "@@@ server complete @@@" "$testname.tmux.log"; then
break
fi
i=$((i+1))
@@ -40,11 +45,11 @@ if [ $i -ge 60 ]; then
exit 99
fi
# capture screen
if ! tmux capture-pane -et $TMUX_PANE; then
if ! tmux capture-pane -et "$TMUX_PANE"; then
printf "tmux capture-pane failed, erroring test\n" >&2
exit 99
fi
if ! tmux save-buffer $testname.capture; then
if ! tmux save-buffer "$testname.capture"; then
printf "tmux save-buffer failed, erroring test\n" >&2
exit 99
fi
+4 -4
View File
@@ -17,7 +17,7 @@ sleepf()
seq_function()
{
if [ $# -lt 1 -o $# -gt 3 ]; then
if [ $# -lt 1 ] || [ $# -gt 3 ]; then
echo "bad args" >&2
fi
first=$1
@@ -35,9 +35,9 @@ seq_function()
;;
esac
while :; do
printf '%d\n' $first
printf '%d\n' "$first"
first=$(( first + incr ))
if [ $first -gt $last ]; then
if [ "$first" -gt "$last" ]; then
break
fi
done
@@ -52,5 +52,5 @@ fi
chr()
{
printf "\\$(printf %03o $1)"
printf '%b' "\\0$(printf %03o "$1")"
}
+6 -5
View File
@@ -8,11 +8,12 @@
# line).
#
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 baseline post
e2e-test "$0" baseline post
exit
fi
@@ -25,7 +26,7 @@ baseline()
{
# We need to control CR and LF individually for this test.
TERMIO=$(stty -g)
trap "stty $TERMIO" EXIT
trap 'stty "$TERMIO"' EXIT
stty raw
printf '\033[H\033[J'
for lines in $(seq 1 25); do
@@ -41,7 +42,7 @@ post()
# If hidden 80th column is working properly, then the lines
# will have no blank lines in between and we should see 23
# of them.
if [ $(grep -c "EEEEEEEEEE" $(basename $0).d/baseline.capture) -ne 23 ]; then
if [ "$(grep -c "EEEEEEEEEE" "$(basename "$0").d/baseline.capture")" -ne 23 ]; then
exit 1
fi
}
@@ -52,5 +53,5 @@ case $1 in
post)
post;;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
+4 -3
View File
@@ -4,11 +4,12 @@
# This validates display of ASCII and ISO-8859-1 characters.
#
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 baseline direct verify
e2e-test "$0" baseline direct verify
exit
fi
@@ -41,5 +42,5 @@ case $1 in
baseline|direct)
baseline;;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
+12 -11
View File
@@ -10,11 +10,12 @@
# compares on these values fail though they are visually identical.
#
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 baseline direct verify
e2e-test "$0" baseline direct verify
exit
fi
@@ -26,7 +27,7 @@ fi
baseline()
{
# Strip our name to the last dash-separated word before the .test suffix.
testname=$(basename $1)
testname=$(basename "$1")
testname=${testname%%.test}
testname=${testname##*-}
@@ -44,35 +45,35 @@ baseline()
# 16-color attributes.
16color)
for attr in $(seq 30 37) $(seq 39 47) 49; do
printf '\033[%dmE\033[m ' $attr
printf '\033[%dmE\033[m ' "$attr"
done
printf '\n'
;;
# First 8 256-color attributes. Comparing mosh and tmux fails.
256color8)
for attr in $(seq 0 7); do
printf '\033[38;5;%dmE\033[m ' $attr
printf '\033[48;5;%dmM\033[m ' $attr
printf '\033[38;5;%dmE\033[m ' "$attr"
printf '\033[48;5;%dmM\033[m ' "$attr"
done
printf '\n'
;;
# Last 248 256-color attributes.
256color248)
for attr in $(seq 8 255); do
printf '\033[38;5;%dmE\033[m ' $attr
printf '\033[48;5;%dmM\033[m ' $attr
printf '\033[38;5;%dmE\033[m ' "$attr"
printf '\033[48;5;%dmM\033[m ' "$attr"
done
printf '\n'
;;
*)
fail "unknown test name %s\n" $1
fail "unknown test name %s\n" "$1"
;;
esac
}
case $1 in
baseline|direct)
baseline $0;;
baseline "$0";;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
+10 -9
View File
@@ -4,11 +4,12 @@
# This test is for issue 539 on github.
#
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 baseline post
e2e-test "$0" baseline post
exit
fi
@@ -29,17 +30,17 @@ baseline()
post()
{
# Basic previously-failing case.
if grep -q 'hello, wurldo' $(basename $0).d/baseline.capture; then
if grep -q 'hello, wurldo' "$(basename "$0").d/baseline.capture"; then
exit 1
fi
if ! grep -q 'hello, world' $(basename $0).d/baseline.capture; then
if ! grep -q 'hello, world' "$(basename "$0").d/baseline.capture"; then
exit 99
fi
# New test cases for new code.
if ! grep -q 'oello, wurld' $(basename $0).d/baseline.capture ||
! grep -q '9ello, wurld' $(basename $0).d/baseline.capture ||
! grep -q 'hello, wurld t' $(basename $0).d/baseline.capture ||
! grep -E -q '^ {79}#$' $(basename $0).d/baseline.capture; then
if ! grep -q 'oello, wurld' "$(basename "$0").d/baseline.capture" ||
! grep -q '9ello, wurld' "$(basename "$0").d/baseline.capture" ||
! grep -q 'hello, wurld t' "$(basename "$0").d/baseline.capture" ||
! grep -E -q '^ {79}#$' "$(basename "$0").d/baseline.capture"; then
exit 1
fi
exit 0
@@ -51,5 +52,5 @@ case $1 in
post)
post;;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
+6 -5
View File
@@ -5,11 +5,12 @@
# motions in Mosh.
#
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 baseline direct verify
e2e-test "$0" baseline direct verify
exit
fi
@@ -22,8 +23,8 @@ baseline()
{
printf '\033[H\033[J'
while read x y text; do
printf '\033[%d;%dH%s' $y $x $text
while read -r x y text; do
printf '\033[%d;%dH%s' "$y" "$x" "$text"
sleepf
done <<EOF
1 1 A
@@ -53,5 +54,5 @@ case $1 in
baseline|direct)
baseline;;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
+6 -5
View File
@@ -7,11 +7,12 @@
# 24 in this test environment).
#
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 baseline
e2e-test "$0" baseline
exit
fi
@@ -25,8 +26,8 @@ baseline()
printf '\033[H\033[J'
for dir in L M; do
for i in $(seq 0 2) $(seq 22 26); do
printf '%d\r' $i
printf '\033[%d%s' $i $dir
printf '%d\r' "$i"
printf '\033[%d%s' "$i" "$dir"
# On the one hand, we'd like to test that this works
# properly on both client and server, which requires
# delays so that each iteration percolates to the client
@@ -41,5 +42,5 @@ case $1 in
baseline)
baseline;;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
+4 -3
View File
@@ -9,11 +9,12 @@
# sense.
#
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 baseline direct verify
e2e-test "$0" baseline direct verify
exit
fi
@@ -39,5 +40,5 @@ case $1 in
baseline|direct)
baseline;;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
+5 -4
View File
@@ -25,11 +25,12 @@
# correct character.
#
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 tmux baseline mosh-args post
e2e-test "$0" tmux baseline mosh-args post
exit
fi
@@ -71,7 +72,7 @@ baseline()
post()
{
# Look for bad output: ')' or \374
if [ -n "$(env -u LC_ALL -u LC_CTYPE -u LANGUAGE LANG=C egrep "%output %0 (\)|$(printf \\374))" $(basename $0).d/baseline.tmux.log)" ]; then
if [ -n "$(env -u LC_ALL -u LC_CTYPE -u LANGUAGE LANG=C egrep "%output %0 (\)|$(printf \\374))" "$(basename "$0").d/baseline.tmux.log")" ]; then
exit 1
fi
exit 0
@@ -88,5 +89,5 @@ case $1 in
post)
post;;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
+8 -7
View File
@@ -11,11 +11,12 @@
# cleanup with kill -9.
#
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 tmux baseline post
e2e-test "$0" tmux baseline post
exit
fi
@@ -53,14 +54,14 @@ baseline()
blat=$(for i in $(seq 1 100); do
printf 'a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\np\nq\nr\ns\nt\nu\nv\nw\nx\ny\nz\n'
done)
read x
read -r x
while true; do
printf "$blat"
printf '%s' "$blat"
done &
printpid=$!
(sleep 120; kill $$ $printpid) &
killpid=$!
read x
read -r x
kill $printpid
# Try and make sure the printer stops writing before the following printf
sleep 1
@@ -74,7 +75,7 @@ baseline()
post()
{
if grep -q '=== normal exit ===' $(basename $0).d/baseline.capture; then
if grep -q '=== normal exit ===' "$(basename "$0").d/baseline.capture"; then
exit 0
fi
exit 1
@@ -89,5 +90,5 @@ case $1 in
post)
post;;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
+13 -12
View File
@@ -14,11 +14,12 @@
TIMEOUT=10
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 client baseline
e2e-test "$0" client baseline
exit
fi
@@ -47,7 +48,7 @@ client()
fail "mosh-client had a normal exit\n";; # test condition failed
9|137|265)
# Aha, signal 9. Wait.
sleep $(( $TIMEOUT + 12 ))
sleep $(( TIMEOUT + 12 ))
exit 0
;;
*)
@@ -59,7 +60,7 @@ client()
baseline()
{
# check for our wonderful variable
if [ -z "$MOSH_SERVER_NETWORK_TMOUT" -a -z "$MOSH_SERVER_SIGNAL_TMOUT" ]; then
if [ -z "$MOSH_SERVER_NETWORK_TMOUT" ] && [ -z "$MOSH_SERVER_SIGNAL_TMOUT" ]; then
env
fail "Variable unset\n"
fi
@@ -68,7 +69,7 @@ baseline()
env
fail "Client pid unavailable\n"
fi
if ! kill -0 $MOSH_CLIENT_PID; then
if ! kill -0 "$MOSH_CLIENT_PID"; then
fail "mosh client is unexpectedly missing\n"
fi
@@ -77,17 +78,17 @@ baseline()
sleep 1
# Kill the client, to stop network traffic.
kill -KILL $MOSH_CLIENT_PID
kill -KILL "$MOSH_CLIENT_PID"
case "$myname" in
server-network-timeout)
# Just wait. This is the hardest part.
sleep $(( $TIMEOUT + 7 ))
sleep $(( TIMEOUT + 7 ))
;;
server-signal-timeout)
# Wait for the timeout to expire.
sleep $(( $TIMEOUT + 2 ))
sleep $(( TIMEOUT + 2 ))
# Tell the server to go away.
kill -USR1 $MOSH_SERVER_PID
kill -USR1 "$MOSH_SERVER_PID"
sleep 5
;;
*)
@@ -97,11 +98,11 @@ baseline()
# XXX the server is getting killed and we're getting here anyway.
# Exit with error only if server is still around.
sleep 1
! kill -0 $MOSH_SERVER_PID
! kill -0 "$MOSH_SERVER_PID"
exit
}
myname="$(basename $0 .test)"
myname="$(basename "$0" .test)"
case $1 in
baseline|variant)
@@ -109,5 +110,5 @@ case $1 in
client)
client "$@";;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
@@ -8,11 +8,12 @@
#
# It just sends the offending output to mosh and expects it to not die.
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 baseline
e2e-test "$0" baseline
exit
fi
@@ -30,5 +31,5 @@ case $1 in
baseline)
baseline;;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
+5 -4
View File
@@ -10,11 +10,12 @@
# that are visually identical. The variant test is not run or validated.
#
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 baseline post
e2e-test "$0" baseline post
exit
fi
@@ -36,7 +37,7 @@ variant()
post()
{
export LANG=C
if grep -q "$(printf '^\302\240\314\202$')" $(basename $0).d/baseline.capture; then
if grep -q "$(printf '^\302\240\314\202$')" "$(basename "$0").d/baseline.capture"; then
exit 0
fi
exit 1
@@ -50,5 +51,5 @@ case $1 in
post)
post;;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac
+7 -6
View File
@@ -6,11 +6,12 @@
# resize them. But it works!
#
. $(dirname $0)/e2e-test-subrs
# shellcheck source=e2e-test-subrs
. "$(dirname "$0")/e2e-test-subrs"
PATH=$PATH:.:$srcdir
# Top-level wrapper.
if [ $# -eq 0 ]; then
e2e-test $0 tmux baseline
e2e-test "$0" tmux baseline
exit
fi
@@ -20,16 +21,16 @@ tmux_resize_commands()
shrink=$2
grow=$3
# Split the window into two panes.
printf "split-window -${hv}\n"
printf "split-window -%s\n" "${hv}"
# Shrink the pane we created
for i in $(seq 1 10); do
sleepf
printf "resize-pane -${shrink}\n"
printf "resize-pane -%s\n" "${shrink}"
done
# And grow it
for i in $(seq 1 10); do
sleepf
printf "resize-pane -${grow}\n"
printf "resize-pane -%s\n" "${grow}"
done
sleep 1
# Remove the pane we created.
@@ -78,5 +79,5 @@ case $1 in
baseline)
baseline;;
*)
fail "unknown test argument %s\n" $1;;
fail "unknown test argument %s\n" "$1";;
esac