diff options
Diffstat (limited to 'tests/ipcalc-testrunner.sh')
-rwxr-xr-x | tests/ipcalc-testrunner.sh | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/tests/ipcalc-testrunner.sh b/tests/ipcalc-testrunner.sh new file mode 100755 index 0000000..d5bc2fd --- /dev/null +++ b/tests/ipcalc-testrunner.sh @@ -0,0 +1,86 @@ +#!/bin/sh +# +# This shell script is a simple test runner for ipcalc tests. +# +# Adapted from: Matej Susta <msusta@redhat.com> +# +# Copyright (c) 2009 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# 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. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. + +exitcode=0 + +ok() { + echo "ok." +} + +fail() { + echo "FAILED!" + exitcode=$((exitcode+1)) + echo -e "Output was:\n$1" +} + +TestSuccess() { + echo -n "Checking $@... " + output=$(sh -c "$1" 2>&1) + rc=$? + [ $rc -eq 0 ] && ok || fail $output +} + +TestFailure() { + echo -n "Checking $@... " + output=$(sh -c "$1" 2>&1) + rc=$? + [ $rc -eq 0 ] && fail $output || ok +} + +TestOutput() { + echo -n "Checking $1... " + output=$(sh -c "$1" 2>&1) + rc=$? + [ "$output" = "$2" ] && ok || fail $output +} + +TestOutputFile() { + echo -n "Reading $2... " + [ -e "$2" ] || { fail "missing file $2"; return; } + contents="$(cat "$2" 2>/dev/null)" + [ -n "$contents" ] && ok || { fail "failed to read $2"; return; } + TestOutput "$1" "$contents" +} + +TestEqual() { + TestSuccess "$1" + [ -n "$output" ] && output1="$output" || { fail "no output from $1"; return; } + TestSuccess "$2" + [ -n "$output" ] && output2="$output" || { fail "no output from $2"; return; } + echo -n "Comparing output... " + [ "$output1" = "$output2" ] && ok || fail "$output1 <> $output2" +} + +while [ $# -gt 0 ]; do + case $1 in + --test-success) TestSuccess "$2"; shift ;; + --test-failure) TestFailure "$2"; shift ;; + --test-output) TestOutput "$2" "$3"; shift; shift ;; + --test-outfile) TestOutputFile "$2" "$3"; shift; shift ;; + --test-equal) TestEqual "$2" "$3"; shift; shift ;; + *) fail "invalid argument: $1" ;; + esac + shift +done + +echo "$exitcode test(s) failed." +exit $exitcode |