xref: /aosp_15_r20/external/vboot_reference/tests/futility/test_main.sh (revision 8617a60d3594060b7ecbd21bc622a7c14f3cf2bc)
1*8617a60dSAndroid Build Coastguard Worker#!/bin/bash -eux
2*8617a60dSAndroid Build Coastguard Worker# Copyright 2014 The ChromiumOS Authors
3*8617a60dSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
4*8617a60dSAndroid Build Coastguard Worker# found in the LICENSE file.
5*8617a60dSAndroid Build Coastguard Worker
6*8617a60dSAndroid Build Coastguard Workerme=${0##*/}
7*8617a60dSAndroid Build Coastguard WorkerTMP="$me.tmp"
8*8617a60dSAndroid Build Coastguard Worker
9*8617a60dSAndroid Build Coastguard Worker# Work in scratch directory
10*8617a60dSAndroid Build Coastguard Workercd "$OUTDIR"
11*8617a60dSAndroid Build Coastguard Worker
12*8617a60dSAndroid Build Coastguard Worker# No args returns nonzero exit code
13*8617a60dSAndroid Build Coastguard Worker"${FUTILITY}" && false
14*8617a60dSAndroid Build Coastguard Worker
15*8617a60dSAndroid Build Coastguard Worker# It's weird but okay if the command is a full path.
16*8617a60dSAndroid Build Coastguard Worker"${FUTILITY}" /fake/path/to/help  > "$TMP"
17*8617a60dSAndroid Build Coastguard Workergrep Usage "$TMP"
18*8617a60dSAndroid Build Coastguard Worker
19*8617a60dSAndroid Build Coastguard Worker# Use some known digests to verify that things work...
20*8617a60dSAndroid Build Coastguard WorkerDEVKEYS="${SRCDIR}/tests/devkeys"
21*8617a60dSAndroid Build Coastguard WorkerSHA=e78ce746a037837155388a1096212ded04fb86eb
22*8617a60dSAndroid Build Coastguard Worker
23*8617a60dSAndroid Build Coastguard Worker# all progs in the pipelines should work
24*8617a60dSAndroid Build Coastguard Workerset -o pipefail
25*8617a60dSAndroid Build Coastguard Worker
26*8617a60dSAndroid Build Coastguard Worker# If it's invoked as the name of a command we know, it should do that command
27*8617a60dSAndroid Build Coastguard Workerln -sf "${FUTILITY}" vbutil_key
28*8617a60dSAndroid Build Coastguard Worker./vbutil_key --unpack "${DEVKEYS}/installer_kernel_data_key.vbpubk" | \
29*8617a60dSAndroid Build Coastguard Worker  grep "${SHA}"
30*8617a60dSAndroid Build Coastguard Workerln -sf "${FUTILITY}" vbutil_keyblock
31*8617a60dSAndroid Build Coastguard Worker./vbutil_keyblock --unpack "${DEVKEYS}/installer_kernel.keyblock" | \
32*8617a60dSAndroid Build Coastguard Worker  grep "${SHA}"
33*8617a60dSAndroid Build Coastguard Workercp "${FUTILITY}" show
34*8617a60dSAndroid Build Coastguard Worker./show "${SCRIPT_DIR}/futility/data/rec_kernel_part.bin" | grep "${SHA}"
35*8617a60dSAndroid Build Coastguard Worker
36*8617a60dSAndroid Build Coastguard Worker# If it's invoked by any other name, expect the command to be the first arg.
37*8617a60dSAndroid Build Coastguard Workerln -sf "${FUTILITY}" muggle
38*8617a60dSAndroid Build Coastguard Worker./muggle vbutil_key --unpack "${DEVKEYS}/installer_kernel_data_key.vbpubk" \
39*8617a60dSAndroid Build Coastguard Worker  | grep "${SHA}"
40*8617a60dSAndroid Build Coastguard Workerln -sf "${FUTILITY}" buggle
41*8617a60dSAndroid Build Coastguard Worker./buggle vbutil_keyblock --unpack "${DEVKEYS}/installer_kernel.keyblock" \
42*8617a60dSAndroid Build Coastguard Worker  | grep "${SHA}"
43*8617a60dSAndroid Build Coastguard Workercp "${FUTILITY}" boo
44*8617a60dSAndroid Build Coastguard Worker./boo show "${SCRIPT_DIR}/futility/data/rec_kernel_part.bin" | grep "${SHA}"
45*8617a60dSAndroid Build Coastguard Worker
46*8617a60dSAndroid Build Coastguard Worker
47*8617a60dSAndroid Build Coastguard Worker# we expect the first command fail, but the output to match anyway
48*8617a60dSAndroid Build Coastguard Workerset +o pipefail
49*8617a60dSAndroid Build Coastguard Worker
50*8617a60dSAndroid Build Coastguard Worker# If it can't figure out the command at all, it should complain.
51*8617a60dSAndroid Build Coastguard Worker"${FUTILITY}" muggle | grep Usage:
52*8617a60dSAndroid Build Coastguard Worker./buggle futility | grep Usage:
53*8617a60dSAndroid Build Coastguard Worker./boo | grep Usage:
54*8617a60dSAndroid Build Coastguard Worker
55*8617a60dSAndroid Build Coastguard Worker# cleanup
56*8617a60dSAndroid Build Coastguard Workerrm -f "${TMP}"* vbutil_key vbutil_keyblock show muggle buggle boo
57*8617a60dSAndroid Build Coastguard Workerexit 0
58