diff options
author | Alex Thiessen <alex.thiessen.de+coreboot@gmail.com> | 2018-01-02 17:40:55 +0000 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2018-11-15 09:07:05 +0000 |
commit | 15aad88404da3a6dfcabcfc04a9c41bec89e3cc9 (patch) | |
tree | d26e862466987279ecc86131b102bb04a9217747 /util/gitconfig/test/helpers.sh | |
parent | c9826d79347256b7efd65075740fbf2ae9f48812 (diff) |
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.sh | 71 |
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 +} |