| #! /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 "$@" |