summaryrefslogtreecommitdiff
path: root/futility/tests/run_futility_tests.sh
diff options
context:
space:
mode:
Diffstat (limited to 'futility/tests/run_futility_tests.sh')
-rwxr-xr-xfutility/tests/run_futility_tests.sh78
1 files changed, 78 insertions, 0 deletions
diff --git a/futility/tests/run_futility_tests.sh b/futility/tests/run_futility_tests.sh
new file mode 100755
index 00000000..ff2de4be
--- /dev/null
+++ b/futility/tests/run_futility_tests.sh
@@ -0,0 +1,78 @@
+#!/bin/bash
+# Copyright (c) 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.
+. "$(dirname "$0")/common.sh"
+
+# Where are the programs I'm testing against?
+[ -z "${1:-}" ] && error "Directory argument is required"
+BINDIR="$1"
+shift
+
+FUTILITY="$BINDIR/futility"
+OLDDIR="$BINDIR/old_bins"
+
+BUILD=$(dirname "${BINDIR}")
+
+# Here are the old programs to be wrapped
+# FIXME(chromium-os:37062): There are others besides these.
+# FIXME: dev_debug_vboot isn't tested right now.
+PROGS=${*:-cgpt crossystem dev_sign_file dumpRSAPublicKey
+ dump_fmap dump_kernel_config enable_dev_usb_boot gbb_utility
+ tpm_init_temp_fix tpmc vbutil_firmware vbutil_kernel vbutil_key
+ vbutil_keyblock vbutil_what_keys}
+
+# Get ready
+pass=0
+progs=0
+pwd
+OUTDIR="${BUILD}/tests/futility_test_dir"
+[ -d "$OUTDIR" ] || mkdir -p "$OUTDIR"
+
+# For now just compare results of invoking each program with no args.
+# FIXME(chromium-os:37062): Create true rigorous tests for every program.
+for i in $PROGS; do
+ : $(( progs++ ))
+
+ # Try the real thing first
+ echo -n "$i ... "
+ rc=$("${OLDDIR}/$i" \
+ 1>"${OUTDIR}/$i.stdout.orig" 2>"${OUTDIR}/$i.stderr.orig" \
+ || echo "$?")
+ echo "${rc:-0}" > "${OUTDIR}/$i.return.orig"
+
+ # Then try the symlink
+ rc=$("$BINDIR/$i" 1>"${OUTDIR}/$i.stdout.link" \
+ 2>"${OUTDIR}/$i.stderr.link" || echo "$?")
+ echo "${rc:-0}" > "${OUTDIR}/$i.return.link"
+
+ # And finally try the explicit wrapper
+ rc=$("$FUTILITY" "$i" 1>"${OUTDIR}/$i.stdout.futil" \
+ 2>"${OUTDIR}/$i.stderr.futil" || echo "$?")
+ echo "${rc:-0}" > "${OUTDIR}/$i.return.futil"
+
+ # Different?
+ if cmp -s "${OUTDIR}/$i.return.orig" "${OUTDIR}/$i.return.link" &&
+ cmp -s "${OUTDIR}/$i.stdout.orig" "${OUTDIR}/$i.stdout.link" &&
+ cmp -s "${OUTDIR}/$i.stderr.orig" "${OUTDIR}/$i.stderr.link" &&
+ cmp -s "${OUTDIR}/$i.return.orig" "${OUTDIR}/$i.return.futil" &&
+ cmp -s "${OUTDIR}/$i.stdout.orig" "${OUTDIR}/$i.stdout.futil" &&
+ cmp -s "${OUTDIR}/$i.stderr.orig" "${OUTDIR}/$i.stderr.futil" ; then
+ green "passed"
+ : $(( pass++ ))
+ rm -f ${OUTDIR}/$i.{stdout,stderr,return}.{orig,link,futil}
+ else
+ red "failed"
+ fi
+done
+
+# done
+if [ "$pass" -eq "$progs" ]; then
+ green "Success: $pass / $progs passed"
+ exit 0
+fi
+
+red "FAIL: $pass / $progs passed"
+exit 1