diff options
Diffstat (limited to 'tests/futility/test_file_types.sh')
-rwxr-xr-x | tests/futility/test_file_types.sh | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/tests/futility/test_file_types.sh b/tests/futility/test_file_types.sh new file mode 100755 index 00000000..8acbcf72 --- /dev/null +++ b/tests/futility/test_file_types.sh @@ -0,0 +1,74 @@ +#!/bin/bash -eux +# Copyright 2015 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. + +me=${0##*/} +TMP="$me.tmp" + +# Work in scratch directory +cd "$OUTDIR" + + +# The first part of this is a script version of the compiled test by the same +# name, to ensure we have working results. + +# Args are <expected_type>, <file_to_probe> +test_case() { + local result + result=$(${FUTILITY} show -t "${SRCDIR}/$2" | awk '{print $NF}') + [ "$1" = "$result" ] +} + +# Arg is <file_to_probe> +fail_case() { + if ${FUTILITY} show -t "$1" ; then false; else true; fi +} + +# Known types +test_case "unknown" "tests/futility/data/random_noise.bin" +test_case "pubkey" "tests/devkeys/root_key.vbpubk" +test_case "keyblock" "tests/devkeys/kernel.keyblock" +test_case "fw_pre" "tests/futility/data/fw_vblock.bin" +test_case "gbb" "tests/futility/data/fw_gbb.bin" +test_case "bios" "tests/futility/data/bios_zgb_mp.bin" +test_case "oldbios" "tests/futility/data/bios_mario_mp.bin" +test_case "kernel" "tests/futility/data/kern_preamble.bin" +# We don't have a way to identify these (yet?) +# test_case "RAW_FIRMWARE" +# test_case "RAW_KERNEL" +# test_case "CHROMIUMOS_DISK" +test_case "prikey" "tests/devkeys/root_key.vbprivk" +test_case "pubkey21" "tests/futility/data/sample.vbpubk2" +test_case "prikey21" "tests/futility/data/sample.vbprik2" +test_case "pem" "tests/testkeys/key_rsa2048.pem" + +# Expect failure here. +fail_case "/Sir/Not/Appearing/In/This/Film" +fail_case "${SRCDIR}" +fail_case "/dev/zero" + + +# Now test the show command when the file type is intentionally wrong. It +# often won't work, but it certainly shouldn't core dump. + +# We'll ask futility to tell us what types it supports +TYPES=$(${FUTILITY} show --type help | awk '/^ +/ {print $1}') + +# And we'll just reuse the same files above. +FILES=$(awk '/^test_case / {print $NF}' $0 | tr -d '"') + +# futility should normally exit with either 0 or 1. Make sure that happens. +# NOTE: /bin/bash returns values > 125 for special problems like signals. +# I welcome patches to do this more portably. +for type in $TYPES; do + for file in $FILES; do + ${FUTILITY} show --type ${type} "${SRCDIR}/${file}" && rc=$? || rc=$? + [ "$rc" -le 2 ] + done +done + + +# cleanup +rm -rf ${TMP}* +exit 0 |