#! /bin/sh # $Id$ # vim:et:ft=sh:sts=2:sw=2 # # Copyright 2008 Kate Ward. All Rights Reserved. # Released under the LGPL (GNU Lesser General Public License) # # Author: kate.ward@forestent.com (Kate Ward) # # 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 FLAGS "${@:-}" || exit $? eval set -- "${FLAGS_ARGV}" # 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