summaryrefslogtreecommitdiff
path: root/util/gitconfig/test/helpers.sh
diff options
context:
space:
mode:
authorAlex Thiessen <alex.thiessen.de+coreboot@gmail.com>2018-01-02 17:40:55 +0000
committerPatrick Georgi <pgeorgi@google.com>2018-11-15 09:07:05 +0000
commit15aad88404da3a6dfcabcfc04a9c41bec89e3cc9 (patch)
treed26e862466987279ecc86131b102bb04a9217747 /util/gitconfig/test/helpers.sh
parentc9826d79347256b7efd65075740fbf2ae9f48812 (diff)
downloadcoreboot-15aad88404da3a6dfcabcfc04a9c41bec89e3cc9.tar.xz
util/gitconfig: Add timeout test
Add a `util/gitconfig/test` subdirectory which will contain tests to run as executable files, add a helper script. Add a timeout test that verifies that gitconfig completes in under two seconds (typical run time is ~30 ms). Add gitconfig tests to the `testing` Makefile under the `test-tools` target. Change-Id: Id46f905b9f782e67be97a65d10045c3345dc996b Signed-off-by: Alex Thiessen <alex.thiessen.de+coreboot@gmail.com> Reviewed-on: https://review.coreboot.org/23280 Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'util/gitconfig/test/helpers.sh')
-rw-r--r--util/gitconfig/test/helpers.sh71
1 files changed, 71 insertions, 0 deletions
diff --git a/util/gitconfig/test/helpers.sh b/util/gitconfig/test/helpers.sh
new file mode 100644
index 0000000000..0d4b3c8e21
--- /dev/null
+++ b/util/gitconfig/test/helpers.sh
@@ -0,0 +1,71 @@
+#!/bin/bash
+
+##
+## This file is part of the coreboot project.
+##
+## Copyright (C) 2003-2018 Alex Thiessen <alex.thiessen.de+coreboot@gmail.com>
+##
+## 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
+}