coreboot-kgpe-d16/util/gitconfig/test/timeout.sh
Alex Thiessen 15aad88404 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>
2018-11-15 09:07:05 +00:00

69 lines
1.8 KiB
Bash
Executable file

#!/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
# static analysis
if command -v shellcheck 1>/dev/null; then
shellcheck --exclude=1090,1091 \
"${BASH_SOURCE[0]}" \
"$(dirname "${BASH_SOURCE[0]}")/helpers.sh"
else
echo "shellcheck not found, running unchecked" >&2
fi
# dependency check
dependencies=(dirname git make mktemp rm timeout)
for dependency in "${dependencies[@]}"; do
if ! command -v "${dependency}" 1>/dev/null; then
echo "missing ${dependency}, test skipped" >&2
exit 0
fi
done
source "$(dirname "${BASH_SOURCE[0]}")/helpers.sh"
# setup
base_dir="$(mktemp --directory --tmpdir \
"test-$(basename "${BASH_SOURCE[0]}" .sh)-XXXXXXXX")"
clone_dir="${base_dir}/coreboot"
git clone "$(git rev-parse --show-toplevel)" "${clone_dir}" \
1>"${base_dir}/clone.log" 2>&1
(
set -o errexit
set -o nounset
clone_submodules "${clone_dir}" "${base_dir}"
# mock
git config user.name "John Doe"
git config user.email "john.doe@example.com"
# test
log_file="${base_dir}/gitconfig.log"
timeout 2s make gitconfig \
1>"${log_file}" 2>&1 \
|| check_exit_code positive "${log_file}"
)
# teardown
rm --force --recursive "${base_dir}"