1275970Scy#!/bin/sh 2275970Scy 3275970ScyBACKENDS="EVPORT KQUEUE EPOLL DEVPOLL POLL SELECT WIN32" 4275970ScyTESTS="test-eof test-closed test-weof test-time test-changelist test-fdleak" 5275970ScyFAILED=no 6275970ScyTEST_OUTPUT_FILE=${TEST_OUTPUT_FILE:-/dev/null} 7275970ScyREGRESS_ARGS=${REGRESS_ARGS:-} 8275970Scy 9275970Scy# /bin/echo is a little more likely to support -n than sh's builtin echo, 10275970Scy# printf is even more likely 11275970Scyif test "`printf %s hello 2>&1`" = "hello" 12275970Scythen 13275970Scy ECHO_N="printf %s" 14275970Scyelse 15275970Scy if test -x /bin/echo 16275970Scy then 17275970Scy ECHO_N="/bin/echo -n" 18275970Scy else 19275970Scy ECHO_N="echo -n" 20275970Scy fi 21275970Scyfi 22275970Scy 23275970Scyif test "$TEST_OUTPUT_FILE" != "/dev/null" 24275970Scythen 25275970Scy touch "$TEST_OUTPUT_FILE" || exit 1 26275970Scyfi 27275970Scy 28275970ScyTEST_DIR=. 29275970ScyTEST_SRC_DIR=. 30275970Scy 31275970ScyT=`echo "$0" | sed -e 's/test.sh$//' | sed -e 's/test-script.sh//' ` 32275970Scyif test -x "$T/test-init" 33275970Scythen 34275970Scy TEST_DIR="$T" 35275970Scyelif test -x "./test/test-init" 36275970Scythen 37275970Scy TEST_DIR="./test" 38275970Scyfi 39275970Scyif test -f "$T/check-dumpevents.py" 40275970Scythen 41275970Scy TEST_SRC_DIR="$T" 42275970Scyelif test -f "./test/check-dumpevents.py" 43275970Scythen 44275970Scy TEST_SRC_DIR="./test" 45275970Scyfi 46275970Scy 47275970Scysetup () { 48275970Scy for i in $BACKENDS; do 49275970Scy eval "EVENT_NO$i=yes; export EVENT_NO$i" 50275970Scy done 51275970Scy unset EVENT_EPOLL_USE_CHANGELIST 52275970Scy unset EVENT_PRECISE_TIMER 53275970Scy} 54275970Scy 55275970Scyannounce () { 56275970Scy echo "$@" 57275970Scy echo "$@" >>"$TEST_OUTPUT_FILE" 58275970Scy} 59275970Scy 60275970Scyannounce_n () { 61275970Scy $ECHO_N "$@" 62275970Scy echo "$@" >>"$TEST_OUTPUT_FILE" 63275970Scy} 64275970Scy 65275970Scy 66275970Scyrun_tests () { 67275970Scy if $TEST_DIR/test-init 2>>"$TEST_OUTPUT_FILE" ; 68275970Scy then 69275970Scy true 70275970Scy else 71275970Scy announce Skipping test 72275970Scy return 73275970Scy fi 74275970Scy for i in $TESTS; do 75275970Scy announce_n " $i: " 76275970Scy if $TEST_DIR/$i >>"$TEST_OUTPUT_FILE" ; 77275970Scy then 78275970Scy announce OKAY ; 79275970Scy else 80275970Scy announce FAILED ; 81275970Scy FAILED=yes 82275970Scy fi 83275970Scy done 84275970Scy announce_n " test-dumpevents: " 85275970Scy if python2 -c 'import sys; assert(sys.version_info >= (2, 4))' 2>/dev/null && test -f $TEST_SRC_DIR/check-dumpevents.py; then 86275970Scy if $TEST_DIR/test-dumpevents | python2 $TEST_SRC_DIR/check-dumpevents.py >> "$TEST_OUTPUT_FILE" ; 87275970Scy then 88275970Scy announce OKAY ; 89275970Scy else 90275970Scy announce FAILED ; 91275970Scy fi 92275970Scy else 93275970Scy # no python 94275970Scy if $TEST_DIR/test-dumpevents >/dev/null; then 95275970Scy announce "OKAY (output not checked)" ; 96275970Scy else 97275970Scy announce "FAILED (output not checked)" ; 98275970Scy fi 99275970Scy fi 100275970Scy test -x $TEST_DIR/regress || return 101275970Scy announce_n " regress: " 102275970Scy if test "$TEST_OUTPUT_FILE" = "/dev/null" ; 103275970Scy then 104275970Scy $TEST_DIR/regress --quiet $REGRESS_ARGS 105275970Scy else 106275970Scy $TEST_DIR/regress $REGRESS_ARGS >>"$TEST_OUTPUT_FILE" 107275970Scy fi 108275970Scy if test "$?" = "0" ; 109275970Scy then 110275970Scy announce OKAY ; 111275970Scy else 112275970Scy announce FAILED ; 113275970Scy FAILED=yes 114275970Scy fi 115275970Scy} 116275970Scy 117275970Scydo_test() { 118275970Scy setup 119275970Scy announce "$1 $2" 120275970Scy unset EVENT_NO$1 121275970Scy if test "$2" = "(changelist)" ; then 122275970Scy EVENT_EPOLL_USE_CHANGELIST=yes; export EVENT_EPOLL_USE_CHANGELIST 123275970Scy elif test "$2" = "(timerfd)" ; then 124275970Scy EVENT_PRECISE_TIMER=1; export EVENT_PRECISE_TIMER 125275970Scy elif test "$2" = "(timerfd+changelist)" ; then 126275970Scy EVENT_EPOLL_USE_CHANGELIST=yes; export EVENT_EPOLL_USE_CHANGELIST 127275970Scy EVENT_PRECISE_TIMER=1; export EVENT_PRECISE_TIMER 128275970Scy fi 129275970Scy 130275970Scy run_tests 131275970Scy} 132275970Scy 133275970Scyannounce "Running tests:" 134275970Scy 135275970Scydo_test EPOLL "(timerfd)" 136275970Scydo_test EPOLL "(changelist)" 137275970Scydo_test EPOLL "(timerfd+changelist)" 138275970Scyfor i in $BACKENDS; do 139275970Scy do_test $i 140275970Scydone 141275970Scy 142275970Scyif test "$FAILED" = "yes"; then 143275970Scy exit 1 144275970Scyfi 145