coreboot/util/gitconfig/test/helpers.sh

67 lines
1.9 KiB
Bash

#!/usr/bin/env bash
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; version 3 or later of the License.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## SPDX-License-Identifier: GPL-3.0-or-later
## <https://spdx.org/licenses/GPL-3.0-or-later.html>
##
set -o errexit
set -o nounset
# dependency check
dependencies=(cut git readlink)
for dependency in "${dependencies[@]}"; do
if ! command -v "${dependency}" 1>/dev/null; then
echo "missing ${dependency}, test skipped" >&2
exit 0
fi
done
# helper functions
function clone_submodules() {
clone_dir="${1}"
log_dir="${2}"
modules_dir="$(readlink --canonicalize-missing \
"$(git rev-parse --git-dir)/modules")"
cd "${clone_dir}"
git submodule init 1>>"${log_dir}/clone.log" 2>&1
for submodule in $(git config --get-regexp "submodule\..*\.url" \
| cut --delimiter=. --fields=2); do
git config "submodule.${submodule}.url" \
"${modules_dir}/${submodule}"
done
git submodule update 1>>"${log_dir}/clone.log" 2>&1
}
function check_exit_code() {
declare -i err=${?}
# either "positive" or "negative"
polarity="${1}"
log_file="${2}"
# exit code 124 is special as per `timeout` manpage
if [ "${polarity}" == "positive" ] && [ ${err} -eq 124 ]; then
echo >&2 "timed out"
fi
if [ "${polarity}" == "positive" ] && [ ${err} -ne 0 ]; then
echo "bad exit code: expected 0, actually ${err}"
echo "for details, refer to log file \"${log_file}\""
exit ${err}
elif [ "${polarity}" == "negative" ] && [ ${err} -eq 0 ]; then
echo "bad exit code: expected non-zero, actually 0"
echo "for details, refer to log file \"${log_file}\""
exit 1
fi
}