[master] da2409c38 Improve vtest.sh variable quoting
Dridi Boukelmoune
dridi at varni.sh
Thu Jan 28 07:52:37 UTC 2021
On Wed, Jan 27, 2021 at 8:11 PM Nils Goroll <nils.goroll at uplex.de> wrote:
>
>
> commit da2409c3863d1da8f2dac0ace9ae05fa0e743d81
> Author: Nils Goroll <nils.goroll at uplex.de>
> Date: Wed Jan 27 21:08:13 2021 +0100
>
> Improve vtest.sh variable quoting
>
> Advise from shellcheck taken undogmatically.
>
> (I always forget: is $() for `..` posix-sh or not?)
$(...) is in POSIX, not (or no longer) a bashism, at least since 2001.
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_03
> diff --git a/tools/vtest.sh b/tools/vtest.sh
> index bc601ca69..936a96020 100755
> --- a/tools/vtest.sh
> +++ b/tools/vtest.sh
> @@ -66,11 +66,11 @@ export VTEST_REPORT="${REPORTDIR}/_log"
> #######################################################################
> # Establish TMPDIR
>
> -mkdir -p ${TMPDIR}
> -rm -rf ${TMPDIR}/*
> +mkdir -p "${TMPDIR}"
> +rm -rf "${TMPDIR:?}"/*
>
> # Try to make varnish own TMPDIR, in case we run as root
> -chown varnish ${TMPDIR} > /dev/null 2>&1 || true
> +chown varnish "${TMPDIR}" > /dev/null 2>&1 || true
>
> #######################################################################
> # Establish the SRCDIR we build/run/test
> @@ -91,7 +91,7 @@ if [ ! -f vt_key.pub ] ; then
> fi
>
> pack () (
> - cd ${REPORTDIR}
> + cd "${REPORTDIR}"
> tar czf - _log \
> `grep '^MANIFEST ' _log | sort -u | sed 's/^MANIFEST *//'` \
> )
> @@ -104,15 +104,15 @@ submit () (
> -o NumberOfPasswordPrompts=0 \
> -o RequestTTY=no \
> -i vt_key \
> - ${SSH_DST} \
> + "${SSH_DST}" \
> true \
> - < ${1}
> + < "${1}"
> )
>
> -rm -f ${TMPDIR}/_report.tgz
> -touch ${TMPDIR}/_report.tgz
> +rm -f "${TMPDIR}"/_report.tgz
> +touch "${TMPDIR}"/_report.tgz
>
> -if ! submit ${TMPDIR}/_report.tgz; then
> +if ! submit "${TMPDIR}"/_report.tgz; then
> echo "Test submit failed"
> echo
> echo "You probably need to email this VTEST specific ssh-key"
> @@ -193,7 +193,7 @@ failedtests () (
> grep -l ':test-result: FAIL' "$LOGDIR"/*.trs |
> while read trs
> do
> - name=`basename $trs .trs`
> + name=`basename "${trs}" .trs`
> vtc="${name}.vtc"
> log="${name}.log"
> rev=`git log -n 1 --pretty=format:%H "${VTCDIR}/${vtc}"`
> @@ -226,12 +226,12 @@ do
> (cd "${SRCDIR}" && chmod -R +w varnish-trunk && rm -rf varnish-trunk > /dev/null 2>&1 || true)
> rev=`cd "${SRCDIR}" && git show -s --pretty=format:%H`
> if [ "x${rev}" != "x${orev}" ] ; then
> - waitcur=${WAITMIN}
> + waitcur=${WAITMIN}
> elif [ "${waitnext}" -gt 0 ] ; then
> sleep ${WAITPERIOD}
> waitnext=`expr ${waitnext} - 1 || true`
> continue
> - else
> + else
> waitcur=`expr ${waitcur} + 1`
> if [ ${waitcur} -gt ${WAITMAX} ] ; then
> waitcur=${WAITMAX}
> @@ -253,55 +253,55 @@ do
> # NB: Only change the report version number when the format/content
> # NB: of the report changes. Corresponding changes on the backend
> # NB: will be required. Coordinate with phk at .
> - echo "VTEST 1.05" > ${VTEST_REPORT}
> - echo "DATE `date +%s`" >> ${VTEST_REPORT}
> - echo "BRANCH trunk" >> ${VTEST_REPORT}
> - echo "HOST `hostname`" >> ${VTEST_REPORT}
> - echo "UNAME `uname -a`" >> ${VTEST_REPORT}
> - echo "UGID `id`" >> ${VTEST_REPORT}
> + echo "VTEST 1.05" > "${VTEST_REPORT}"
> + echo "DATE `date +%s`" >> "${VTEST_REPORT}"
> + echo "BRANCH trunk" >> "${VTEST_REPORT}"
> + echo "HOST `hostname`" >> "${VTEST_REPORT}"
> + echo "UNAME `uname -a`" >> "${VTEST_REPORT}"
> + echo "UGID `id`" >> "${VTEST_REPORT}"
> if [ -x /usr/bin/lsb_release ] ; then
> - echo "LSB `lsb_release -d`" >> ${VTEST_REPORT}
> + echo "LSB `lsb_release -d`" >> "${VTEST_REPORT}"
> else
> - echo "LSB none" >> ${VTEST_REPORT}
> + echo "LSB none" >> "${VTEST_REPORT}"
> fi
> - echo "MESSAGE ${MESSAGE}" >> ${VTEST_REPORT}
> - echo "GITREV $rev" >> ${VTEST_REPORT}
> + echo "MESSAGE ${MESSAGE}" >> "${VTEST_REPORT}"
> + echo "GITREV $rev" >> "${VTEST_REPORT}"
>
> find . -name '*.gc??' -print | xargs rm -f
>
> - if ! autogen >> ${REPORTDIR}/_autogen 2>&1 ; then
> - echo "AUTOGEN BAD" >> ${VTEST_REPORT}
> - echo "MANIFEST _autogen" >> ${VTEST_REPORT}
> + if ! autogen >> "${REPORTDIR}"/_autogen 2>&1 ; then
> + echo "AUTOGEN BAD" >> "${VTEST_REPORT}"
> + echo "MANIFEST _autogen" >> "${VTEST_REPORT}"
> else
> - echo "AUTOGEN GOOD" >> ${VTEST_REPORT}
> + echo "AUTOGEN GOOD" >> "${VTEST_REPORT}"
> if $enable_gcov ; then
> - if makegcov >> ${REPORTDIR}/_makegcov 2>&1 ; then
> - mv ${SRCDIR}/_gcov ${REPORTDIR}/
> - echo "MAKEGCOV GOOD" >> ${VTEST_REPORT}
> - echo "MANIFEST _gcov" >> ${VTEST_REPORT}
> + if makegcov >> "${REPORTDIR}"/_makegcov 2>&1 ; then
> + mv ${SRCDIR}/_gcov "${REPORTDIR}"/
> + echo "MAKEGCOV GOOD" >> "${VTEST_REPORT}"
> + echo "MANIFEST _gcov" >> "${VTEST_REPORT}"
> waitcur=${WAITMAX}
> waitnext=${WAITMAX}
> else
> - echo "MAKEGCOV BAD" >> ${VTEST_REPORT}
> - echo "MANIFEST _makegcov" >> ${VTEST_REPORT}
> - failedtests >> ${VTEST_REPORT}
> + echo "MAKEGCOV BAD" >> "${VTEST_REPORT}"
> + echo "MANIFEST _makegcov" >> "${VTEST_REPORT}"
> + failedtests >> "${VTEST_REPORT}"
> fi
> - elif ! makedistcheck >> ${REPORTDIR}/_makedistcheck 2>&1 ; then
> - echo "MAKEDISTCHECK BAD" >> ${VTEST_REPORT}
> - echo "MANIFEST _autogen" >> ${VTEST_REPORT}
> - echo "MANIFEST _makedistcheck" >> ${VTEST_REPORT}
> - failedtests >> ${VTEST_REPORT}
> + elif ! makedistcheck >> "${REPORTDIR}"/_makedistcheck 2>&1 ; then
> + echo "MAKEDISTCHECK BAD" >> "${VTEST_REPORT}"
> + echo "MANIFEST _autogen" >> "${VTEST_REPORT}"
> + echo "MANIFEST _makedistcheck" >> "${VTEST_REPORT}"
> + failedtests >> "${VTEST_REPORT}"
> else
> - echo "MAKEDISTCHECK GOOD" >> ${VTEST_REPORT}
> + echo "MAKEDISTCHECK GOOD" >> "${VTEST_REPORT}"
> waitnext=${WAITMAX}
> waitcur=${WAITMAX}
> fi
> fi
> - echo "VTEST END" >> ${VTEST_REPORT}
> - pack > ${TMPDIR}/_report.tgz
> + echo "VTEST END" >> "${VTEST_REPORT}"
> + pack > "${TMPDIR}"/_report.tgz
>
> - submit ${TMPDIR}/_report.tgz || \
> + submit "${TMPDIR}"/_report.tgz || \
> sleep 300 || \
> - submit ${TMPDIR}/_report.tgz || \
> + submit "${TMPDIR}"/_report.tgz || \
> true
> done
> _______________________________________________
> varnish-commit mailing list
> varnish-commit at varnish-cache.org
> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-commit
More information about the varnish-commit
mailing list