xref: /aosp_15_r20/external/vboot_reference/tests/common.sh (revision 8617a60d3594060b7ecbd21bc622a7c14f3cf2bc)
1*8617a60dSAndroid Build Coastguard Worker#!/bin/bash
2*8617a60dSAndroid Build Coastguard Worker
3*8617a60dSAndroid Build Coastguard Worker# Copyright 2010 The ChromiumOS Authors
4*8617a60dSAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
5*8617a60dSAndroid Build Coastguard Worker# found in the LICENSE file.
6*8617a60dSAndroid Build Coastguard Worker
7*8617a60dSAndroid Build Coastguard Worker# Determine script directory.
8*8617a60dSAndroid Build Coastguard WorkerSCRIPT_DIR="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
9*8617a60dSAndroid Build Coastguard WorkerROOT_DIR="$(dirname "${SCRIPT_DIR}")"
10*8617a60dSAndroid Build Coastguard WorkerSRCDIR="${ROOT_DIR}"
11*8617a60dSAndroid Build Coastguard Worker# BUILD_RUN should be supplied from the Makefile.
12*8617a60dSAndroid Build Coastguard Worker# Some test scripts change the cwd so use an absolute path.
13*8617a60dSAndroid Build Coastguard WorkerBUILD_RUN="$(realpath "${BUILD_RUN}")"
14*8617a60dSAndroid Build Coastguard WorkerBIN_DIR="${BUILD_RUN}/install_for_test/usr/bin"
15*8617a60dSAndroid Build Coastguard WorkerFUTILITY="${BIN_DIR}/futility"
16*8617a60dSAndroid Build Coastguard WorkerTEST_DIR="${BUILD_RUN}/tests"
17*8617a60dSAndroid Build Coastguard WorkerTESTKEY_DIR="${SCRIPT_DIR}/testkeys"
18*8617a60dSAndroid Build Coastguard WorkerTESTCASE_DIR="${SCRIPT_DIR}/testcases"
19*8617a60dSAndroid Build Coastguard WorkerTESTKEY_SCRATCH_DIR="${TEST_DIR}/testkeys"
20*8617a60dSAndroid Build Coastguard Worker
21*8617a60dSAndroid Build Coastguard Workerif [ ! -d "${TESTKEY_SCRATCH_DIR}" ]; then
22*8617a60dSAndroid Build Coastguard Worker  mkdir -p "${TESTKEY_SCRATCH_DIR}"
23*8617a60dSAndroid Build Coastguard Workerfi
24*8617a60dSAndroid Build Coastguard Worker
25*8617a60dSAndroid Build Coastguard Worker# Color output encodings.
26*8617a60dSAndroid Build Coastguard WorkerCOL_RED='\E[31;1m'
27*8617a60dSAndroid Build Coastguard WorkerCOL_GREEN='\E[32;1m'
28*8617a60dSAndroid Build Coastguard WorkerCOL_YELLOW='\E[33;1m'
29*8617a60dSAndroid Build Coastguard WorkerCOL_BLUE='\E[34;1m'
30*8617a60dSAndroid Build Coastguard WorkerCOL_STOP='\E[0;m'
31*8617a60dSAndroid Build Coastguard Worker
32*8617a60dSAndroid Build Coastguard Workerhash_algos=( sha1 sha256 sha512 )
33*8617a60dSAndroid Build Coastguard Workerkey_lengths=( 1024 2048 4096 8192 2048_exp3 3072_exp3 )
34*8617a60dSAndroid Build Coastguard Worker
35*8617a60dSAndroid Build Coastguard Workerfunction happy {
36*8617a60dSAndroid Build Coastguard Worker  echo -e "${COL_GREEN}$*${COL_STOP}" 1>&2
37*8617a60dSAndroid Build Coastguard Worker}
38*8617a60dSAndroid Build Coastguard Worker
39*8617a60dSAndroid Build Coastguard Worker# args: [nested level [message]]
40*8617a60dSAndroid Build Coastguard Workerfunction warning {
41*8617a60dSAndroid Build Coastguard Worker  echo -e "${COL_YELLOW}WARNING: $*${COL_STOP}" 1>&2
42*8617a60dSAndroid Build Coastguard Worker}
43*8617a60dSAndroid Build Coastguard Worker
44*8617a60dSAndroid Build Coastguard Worker# args: [nested level [message]]
45*8617a60dSAndroid Build Coastguard Workerfunction error {
46*8617a60dSAndroid Build Coastguard Worker  local lev=${1:-}
47*8617a60dSAndroid Build Coastguard Worker  case "${1:-}" in
48*8617a60dSAndroid Build Coastguard Worker    [0-9]*)
49*8617a60dSAndroid Build Coastguard Worker      lev=$1
50*8617a60dSAndroid Build Coastguard Worker      shift
51*8617a60dSAndroid Build Coastguard Worker      ;;
52*8617a60dSAndroid Build Coastguard Worker    *) lev=0
53*8617a60dSAndroid Build Coastguard Worker      ;;
54*8617a60dSAndroid Build Coastguard Worker  esac
55*8617a60dSAndroid Build Coastguard Worker  local x
56*8617a60dSAndroid Build Coastguard Worker  x=$(caller $lev)
57*8617a60dSAndroid Build Coastguard Worker  local cline=${x%% *}
58*8617a60dSAndroid Build Coastguard Worker  local cfunc=${x#* }
59*8617a60dSAndroid Build Coastguard Worker  cfunc=${cfunc##*/}
60*8617a60dSAndroid Build Coastguard Worker  local args="$*"
61*8617a60dSAndroid Build Coastguard Worker  local spacer=${args:+: }
62*8617a60dSAndroid Build Coastguard Worker  echo -e "${COL_RED}ERROR at ${cfunc}, line ${cline}${spacer}${args}" \
63*8617a60dSAndroid Build Coastguard Worker    "${COL_STOP}" 1>&2
64*8617a60dSAndroid Build Coastguard Worker  exit 1
65*8617a60dSAndroid Build Coastguard Worker}
66*8617a60dSAndroid Build Coastguard Worker
67*8617a60dSAndroid Build Coastguard Workerfunction check_test_keys {
68*8617a60dSAndroid Build Coastguard Worker  [ -d "${TESTKEY_DIR}" ] || \
69*8617a60dSAndroid Build Coastguard Worker    error 1 "You must run gen_test_keys.sh to generate test keys first."
70*8617a60dSAndroid Build Coastguard Worker}
71