123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #!/bin/bash -eu
- # Copyright 2013 The Chromium OS Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- # Load common constants and variables.
- SCRIPTDIR=$(dirname $(readlink -f "$0"))
- . "$SCRIPTDIR/common.sh"
- # Mandatory arg is the directory where futility is installed.
- [ -z "${1:-}" ] && error "Directory argument is required"
- BINDIR="$1"
- shift
- FUTILITY="$BINDIR/futility"
- # The Makefile should export the $BUILD directory, but if it's not just warn
- # and guess (mostly so we can run the script manually).
- if [ -z "${BUILD:-}" ]; then
- BUILD=$(dirname "${BINDIR}")
- yellow "Assuming BUILD=$BUILD"
- fi
- # Same for $SRCDIR
- if [ -z "${SRCDIR:-}" ]; then
- SRCDIR=$(readlink -f "${SCRIPTDIR}/../..")
- yellow "Assuming SRCDIR=$SRCDIR"
- fi
- OUTDIR="${BUILD}/tests/futility_test_results"
- [ -d "$OUTDIR" ] || mkdir -p "$OUTDIR"
- # Let each test know where to find things...
- export BUILD
- export SRCDIR
- export FUTILITY
- export SCRIPTDIR
- export BINDIR
- export OUTDIR
- # These are the scripts to run. Binaries are invoked directly by the Makefile.
- TESTS="
- ${SCRIPTDIR}/test_bdb.sh
- ${SCRIPTDIR}/test_create.sh
- ${SCRIPTDIR}/test_dump_fmap.sh
- ${SCRIPTDIR}/test_gbb_utility.sh
- ${SCRIPTDIR}/test_load_fmap.sh
- ${SCRIPTDIR}/test_main.sh
- ${SCRIPTDIR}/test_show_contents.sh
- ${SCRIPTDIR}/test_show_kernel.sh
- ${SCRIPTDIR}/test_show_vs_verify.sh
- ${SCRIPTDIR}/test_show_usbpd1.sh
- ${SCRIPTDIR}/test_sign_firmware.sh
- ${SCRIPTDIR}/test_sign_fw_main.sh
- ${SCRIPTDIR}/test_sign_kernel.sh
- ${SCRIPTDIR}/test_sign_keyblocks.sh
- ${SCRIPTDIR}/test_sign_usbpd1.sh
- ${SCRIPTDIR}/test_file_types.sh
- "
- # Get ready...
- pass=0
- progs=0
- ##############################################################################
- # Invoke the scripts that test the builtin functions.
- # Let the test scripts use >&3 to indicate progress
- exec 3>&1
- echo "-- builtin --"
- for i in $TESTS; do
- j=${i##*/}
- : $(( progs++ ))
- echo -n "$j ... "
- rm -rf "${OUTDIR}/$j."*
- rc=$("$i" "$FUTILITY" 1>"${OUTDIR}/$j.stdout" \
- 2>"${OUTDIR}/$j.stderr" || echo "$?")
- echo "${rc:-0}" > "${OUTDIR}/$j.return"
- if [ ! "$rc" ]; then
- green "PASSED"
- : $(( pass++ ))
- rm -f ${OUTDIR}/$j.{stdout,stderr,return}
- else
- red "FAILED. Stdout is recorded in ${OUTDIR}/$j.stdout"
- cat ${OUTDIR}/$j.stderr
- fi
- done
- ##############################################################################
- # How'd we do?
- if [ "$pass" -eq "$progs" ]; then
- green "Success: $pass / $progs passed"
- exit 0
- fi
- red "FAIL: $pass / $progs passed"
- exit 1
|