2020-12-24 20:06:38 +01:00
|
|
|
#!/usr/bin/env bash
|
2018-01-02 18:40:55 +01:00
|
|
|
##
|
|
|
|
## 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
|
|
|
|
}
|