79 lines
1.9 KiB
Bash
Executable file
79 lines
1.9 KiB
Bash
Executable file
#! /bin/sh
|
|
# vim:et:ft=sh:sts=2:sw=2
|
|
#
|
|
# This script runs the provided unit tests and sends the output to the
|
|
# appropriate file.
|
|
|
|
# Treat unset variables as an error.
|
|
set -u
|
|
|
|
die() {
|
|
[ $# -gt 0 ] && echo "error: $@" >&2
|
|
exit 1
|
|
}
|
|
|
|
BASE_DIR="`dirname $0`/.."
|
|
LIB_DIR="${BASE_DIR}/lib"
|
|
|
|
# Load libraries.
|
|
. ${LIB_DIR}/shflags || die 'unable to load shflags library'
|
|
. ${LIB_DIR}/shlib || die 'unable to load shlib library'
|
|
. ${LIB_DIR}/versions || die 'unable to load versions library'
|
|
|
|
# Redefining BASE_DIR now that we have the shlib functions.
|
|
BASE_DIR=`shlib_relToAbsPath "${BASE_DIR}"`
|
|
BIN_DIR="${BASE_DIR}/bin"
|
|
SRC_DIR="${BASE_DIR}/src"
|
|
|
|
os_name=`versions_osName |sed 's/ /_/g'`
|
|
os_version=`versions_osVersion`
|
|
|
|
# Load external flags.
|
|
. ${BIN_DIR}/gen_test_results.flags
|
|
|
|
# Define flags.
|
|
DEFINE_boolean force false 'force overwrite' f
|
|
DEFINE_string output_dir "`pwd`" 'output dir' d
|
|
DEFINE_string output_file "${os_name}-${os_version}.txt" 'output file' o
|
|
DEFINE_boolean dry_run false "supress logging to a file" n
|
|
|
|
main() {
|
|
# Determine output filename.
|
|
output="${FLAGS_output_dir:+${FLAGS_output_dir}/}${FLAGS_output_file}"
|
|
output=`shlib_relToAbsPath "${output}"`
|
|
|
|
# Checks.
|
|
[ -n "${FLAGS_suite:-}" ] || die 'suite flag missing'
|
|
|
|
if [ ${FLAGS_dry_run} -eq ${FLAGS_FALSE} -a -f "${output}" ]; then
|
|
if [ ${FLAGS_force} -eq ${FLAGS_TRUE} ]; then
|
|
rm -f "${output}"
|
|
else
|
|
echo "not overwriting '${output}'" >&2
|
|
exit ${FLAGS_ERROR}
|
|
fi
|
|
fi
|
|
if [ ${FLAGS_dry_run} -eq ${FLAGS_FALSE} ]; then
|
|
touch "${output}" 2>/dev/null || die "unable to write to '${output}'"
|
|
fi
|
|
|
|
# Run tests.
|
|
(
|
|
cd "${SRC_DIR}";
|
|
if [ ${FLAGS_dry_run} -eq ${FLAGS_FALSE} ]; then
|
|
./${FLAGS_suite} |tee "${output}"
|
|
else
|
|
./${FLAGS_suite}
|
|
fi
|
|
)
|
|
|
|
if [ ! ${FLAGS_dry_run} ]; then
|
|
echo >&2
|
|
echo "output written to '${output}'" >&2
|
|
fi
|
|
}
|
|
|
|
FLAGS "$@" || exit $?
|
|
[ ${FLAGS_help} -eq ${FALSE} ] || exit
|
|
eval set -- "${FLAGS_ARGV}"
|
|
main "$@"
|