mirror of
https://github.com/deajan/osync
synced 2024-11-17 09:25:42 +00:00
89 lines
2.4 KiB
Bash
Executable File
89 lines
2.4 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.
|
|
#
|
|
# Copyright 2008-2017 Kate Ward. All Rights Reserved.
|
|
# Released under the Apache 2.0 license.
|
|
#
|
|
# Author: kate.ward@forestent.com (Kate Ward)
|
|
# https://github.com/kward/shunit2
|
|
#
|
|
# Source following.
|
|
# shellcheck disable=SC1090,SC1091
|
|
# FLAGS variables are dynamically created.
|
|
# shellcheck disable=SC2154
|
|
# Disagree with [ p ] && [ q ] vs [ p -a -q ] recommendation.
|
|
# shellcheck disable=SC2166
|
|
|
|
# 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. We need BASE_DIR so
|
|
# that we can properly load things, even in the event that this script is called
|
|
# from a different directory.
|
|
BASE_DIR=$(shlib_relToAbsPath "${BASE_DIR}")
|
|
|
|
# Define flags.
|
|
os_name=$(versions_osName |sed 's/ /_/g')
|
|
os_version=$(versions_osVersion)
|
|
|
|
DEFINE_boolean force false 'force overwrite' f
|
|
DEFINE_string output_dir "${TMPDIR}" 'output dir' d
|
|
DEFINE_string output_file "${os_name}-${os_version}.txt" 'output file' o
|
|
DEFINE_string runner 'test_runner' 'unit test runner' r
|
|
DEFINE_boolean dry_run false "suppress logging to a file" n
|
|
|
|
main() {
|
|
# Determine output filename.
|
|
# shellcheck disable=SC2154
|
|
output="${FLAGS_output_dir:+${FLAGS_output_dir}/}${FLAGS_output_file}"
|
|
output=$(shlib_relToAbsPath "${output}")
|
|
|
|
# Checks.
|
|
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.
|
|
(
|
|
if [ "${FLAGS_dry_run}" -eq "${FLAGS_FALSE}" ]; then
|
|
"./${FLAGS_runner}" |tee "${output}"
|
|
else
|
|
"./${FLAGS_runner}"
|
|
fi
|
|
)
|
|
|
|
if [ "${FLAGS_dry_run}" -eq "${FLAGS_FALSE}" ]; then
|
|
echo >&2
|
|
echo "Output written to '${output}'." >&2
|
|
fi
|
|
}
|
|
|
|
FLAGS "$@" || exit $?
|
|
[ "${FLAGS_help}" -eq "${FLAGS_FALSE}" ] || exit
|
|
eval set -- "${FLAGS_ARGV}"
|
|
main "${@:-}"
|