#! /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 # Let the tests know whether bzip is supported or not. BZIP2_SUPPORT="@BZIP2_SUPPORT@" export BZIP2_SUPPORT 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 lnav="${top_builddir}/src/lnav" export lnav LNAV_LOG_PATH="${top_builddir}/test/test.log" export LNAV_LOG_PATH SFTP_TEST_URL="@SFTP_TEST_URL@" export SFTP_TEST_URL HAVE_SQLITE3_VALUE_SUBTYPE="@HAVE_SQLITE3_VALUE_SUBTYPE@" export HAVE_SQLITE3_VALUE_SUBTYPE ## BEGIN Functions LAST_TEST="" # # Run a test case and capture its standard out and standard err. # # Usage: run_test [ ...] # # 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 {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?" < ${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_output_ws() { 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` } test_err_filename() { echo ${test_file_base}_${test_num}.err } check_error_output() { diff -w -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 # # 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