mirror of
https://github.com/tstack/lnav
synced 2024-11-01 21:40:34 +00:00
131 lines
2.6 KiB
Bash
131 lines
2.6 KiB
Bash
#! /bin/bash
|
|
|
|
top_srcdir="@abssrcdir@"
|
|
export top_srcdir
|
|
|
|
srcdir="@abssrcdir@/test"
|
|
export srcdir
|
|
|
|
# The top build directory, derived from the path to this script.
|
|
top_builddir=`dirname $0`
|
|
export top_builddir
|
|
|
|
test_dir="@abssrcdir@/test"
|
|
export test_dir
|
|
|
|
BZIP2_CMD="@BZIP2_CMD@"
|
|
export BZIP2_CMD
|
|
|
|
HOME="${top_builddir}/test"
|
|
export HOME
|
|
|
|
# The full path of the test case
|
|
test_file=$1
|
|
# The base name of the test case
|
|
test_file_base=`basename $1`
|
|
# The current test number for shell based tests.
|
|
test_num=0
|
|
|
|
lnav_test="${top_builddir}/src/lnav-test"
|
|
export lnav_test
|
|
|
|
## BEGIN Functions
|
|
|
|
LAST_TEST=""
|
|
|
|
#
|
|
# Run a test case and capture its standard out and standard err.
|
|
#
|
|
# Usage: run_test <utility> [<argument> ...]
|
|
#
|
|
# Example:
|
|
#
|
|
# To run rktimes and capture all of its stdio output:
|
|
#
|
|
# run_test rktimes -V
|
|
#
|
|
run_test() {
|
|
LAST_TEST="test: $@"
|
|
"$@" > ${test_file_base}_${test_num}.tmp 2> ${test_file_base}_${test_num}.err
|
|
}
|
|
|
|
#
|
|
# Check the output generated by a run_test() call.
|
|
#
|
|
# Usage: check_output <fail message> {Expected output on stdin}
|
|
#
|
|
# Example:
|
|
#
|
|
# To check the output of 'rktimes -V' and print out 'Unable to get version?'
|
|
# if the output doesn't match:
|
|
#
|
|
# run_test rktimes -V
|
|
# check_output "Unable to get version?" <<EOF
|
|
# 0.5
|
|
# EOF
|
|
#
|
|
check_output() {
|
|
diff -u ${test_file_base}_${test_num}.tmp - > ${test_file_base}_${test_num}.diff
|
|
if test $? -ne 0; then
|
|
echo $LAST_TEST
|
|
echo $1
|
|
cat ${test_file_base}_${test_num}.diff
|
|
exit 1
|
|
fi
|
|
test_num=`expr ${test_num} \+ 1`
|
|
}
|
|
|
|
check_error_output() {
|
|
diff -u ${test_file_base}_${test_num}.err - \
|
|
> ${test_file_base}_${test_num}.err.diff
|
|
if test $? -ne 0; then
|
|
echo $LAST_TEST
|
|
echo $1
|
|
cat ${test_file_base}_${test_num}.err.diff
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
#
|
|
# Grep for a string in the output generated by a run_test() call.
|
|
#
|
|
# Usage: grep_output_for <string> <fail maessage>
|
|
#
|
|
# Example:
|
|
#
|
|
# To check the output of 'cbhey -l' for 'IDL:Foobar:1.0' and print out
|
|
# 'Unable to list supported interfaces?' if it is not found:
|
|
#
|
|
# run_test cbhey -l
|
|
# grep_output_for "IDL:Foobar:1.0" "Unable to list supported interface?"
|
|
#
|
|
grep_output_for() {
|
|
if grep -q $1 ${test_file_base}_${test_num}.tmp > /dev/null 2>&1; then
|
|
:
|
|
else
|
|
echo "${test_file_base}_${test_num}.tmp: $2"
|
|
exit 1
|
|
fi
|
|
test_num=`expr ${test_num} \+ 1`
|
|
}
|
|
|
|
on_error_fail_with() {
|
|
if test $? -ne 0; then
|
|
echo $1 > /dev/stderr
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
## END Functions
|
|
|
|
|
|
# Finally, run the test...
|
|
|
|
if test -x $1 && test `basename $1 .sh` == `basename $1`; then
|
|
exec $*
|
|
else
|
|
# Shell script
|
|
shift
|
|
. ${test_file}
|
|
fi
|