tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test.sh (3784B)


      1 #!/bin/sh
      2 
      3 BACKENDS="EVPORT KQUEUE EPOLL DEVPOLL POLL SELECT WIN32"
      4 TESTS="test-eof test-closed test-weof test-time test-changelist test-fdleak"
      5 FAILED=no
      6 TEST_OUTPUT_FILE=${TEST_OUTPUT_FILE:-/dev/null}
      7 REGRESS_ARGS=${REGRESS_ARGS:-}
      8 
      9 # /bin/echo is a little more likely to support -n than sh's builtin echo,
     10 # printf is even more likely
     11 if test "`printf %s hello 2>&1`" = "hello"
     12 then
     13 ECHO_N="printf %s"
     14 else
     15 if test -x /bin/echo
     16 then
     17 	ECHO_N="/bin/echo -n"
     18 else
     19 	ECHO_N="echo -n"
     20 fi
     21 fi
     22 
     23 if test "$TEST_OUTPUT_FILE" != "/dev/null"
     24 then
     25 touch "$TEST_OUTPUT_FILE" || exit 1
     26 fi
     27 
     28 TEST_DIR=.
     29 TEST_SRC_DIR=.
     30 
     31 T=`echo "$0" | sed -e 's/test.sh$//'`
     32 if test -x "$T/test-init"
     33 then
     34 TEST_DIR="$T"
     35 elif test -x "./test/test-init"
     36 then
     37        TEST_DIR="./test"
     38 fi
     39 if test -f "$T/check-dumpevents.py"
     40 then
     41 TEST_SRC_DIR="$T"
     42 elif test -f "./test/check-dumpevents.py"
     43 then
     44        TEST_SRC_DIR="./test"
     45 fi
     46 
     47 setup () {
     48 for i in $BACKENDS; do
     49 	eval "EVENT_NO$i=yes; export EVENT_NO$i"
     50 done
     51 unset EVENT_EPOLL_USE_CHANGELIST
     52 unset EVENT_PRECISE_TIMER
     53 }
     54 
     55 announce () {
     56 echo "$@"
     57 echo "$@" >>"$TEST_OUTPUT_FILE"
     58 }
     59 
     60 announce_n () {
     61 $ECHO_N "$@"
     62 echo "$@" >>"$TEST_OUTPUT_FILE"
     63 }
     64 
     65 
     66 run_tests () {
     67 if $TEST_DIR/test-init 2>>"$TEST_OUTPUT_FILE" ;
     68 then
     69 	true
     70 else
     71 	announce Skipping test
     72 	return
     73 fi
     74 for i in $TESTS; do
     75 	announce_n " $i: "
     76 	if $TEST_DIR/$i >>"$TEST_OUTPUT_FILE" ;
     77 	then
     78 		announce OKAY ;
     79 	else
     80 		announce FAILED ;
     81 		FAILED=yes
     82 	fi
     83 done
     84 announce_n " test-dumpevents: "
     85 if python -c 'import sys; assert(sys.version_info >= (2, 4))' 2>/dev/null && test -f $TEST_SRC_DIR/check-dumpevents.py; then
     86     if $TEST_DIR/test-dumpevents | $TEST_SRC_DIR/check-dumpevents.py >> "$TEST_OUTPUT_FILE" ;
     87     then
     88         announce OKAY ;
     89     else
     90         announce FAILED ;
     91     fi
     92 else
     93     # no python
     94     if $TEST_DIR/test-dumpevents >/dev/null; then
     95         announce "OKAY (output not checked)" ;
     96     else
     97         announce "FAILED (output not checked)" ;
     98     fi
     99 fi
    100 
    101 test -x $TEST_DIR/regress || return
    102 announce_n " regress: "
    103 if test "$TEST_OUTPUT_FILE" = "/dev/null" ;
    104 then
    105 	$TEST_DIR/regress --quiet $REGRESS_ARGS
    106 else
    107 	$TEST_DIR/regress $REGRESS_ARGS >>"$TEST_OUTPUT_FILE"
    108 fi
    109 if test "$?" = "0" ;
    110 then
    111 	announce OKAY ;
    112 else
    113 	announce FAILED ;
    114 	FAILED=yes
    115 fi
    116 
    117 announce_n " regress_debug: "
    118 if test "$TEST_OUTPUT_FILE" = "/dev/null" ;
    119 then
    120 	EVENT_DEBUG_MODE=1 $TEST_DIR/regress --quiet $REGRESS_ARGS
    121 else
    122 	EVENT_DEBUG_MODE=1 $TEST_DIR/regress $REGRESS_ARGS >>"$TEST_OUTPUT_FILE"
    123 fi
    124 if test "$?" = "0" ;
    125 then
    126 	announce OKAY ;
    127 else
    128 	announce FAILED ;
    129 	FAILED=yes
    130 fi
    131 }
    132 
    133 do_test() {
    134 setup
    135 announce "$1 $2"
    136 unset EVENT_NO$1
    137 if test "$2" = "(changelist)" ; then
    138     EVENT_EPOLL_USE_CHANGELIST=yes; export EVENT_EPOLL_USE_CHANGELIST
    139 elif test "$2" = "(timerfd)" ; then
    140     EVENT_PRECISE_TIMER=1; export EVENT_PRECISE_TIMER
    141 elif test "$2" = "(timerfd+changelist)" ; then
    142     EVENT_EPOLL_USE_CHANGELIST=yes; export EVENT_EPOLL_USE_CHANGELIST
    143     EVENT_PRECISE_TIMER=1; export EVENT_PRECISE_TIMER
    144        fi
    145 
    146 run_tests
    147 }
    148 
    149 usage()
    150 {
    151 cat <<EOL
    152  -b   - specify backends
    153  -t   - run timerfd test
    154  -c   - run changelist test
    155  -T   - run timerfd+changelist test
    156 EOL
    157 }
    158 main()
    159 {
    160 backends=$BACKENDS
    161 timerfd=0
    162 changelist=0
    163 timerfd_changelist=0
    164 
    165 while getopts "b:tcT" c; do
    166 	case "$c" in
    167 		b) backends="$OPTARG";;
    168 		t) timerfd=1;;
    169 		c) changelist=1;;
    170 		T) timerfd_changelist=1;;
    171 		?*) usage && exit 1;;
    172 	esac
    173 done
    174 
    175 announce "Running tests:"
    176 
    177 [ $timerfd -eq 0 ] || do_test EPOLL "(timerfd)"
    178 [ $changelist -eq 0 ] || do_test EPOLL "(changelist)"
    179 [ $timerfd_changelist -eq 0 ] || do_test EPOLL "(timerfd+changelist)"
    180 for i in $backends; do
    181 	do_test $i
    182 done
    183 
    184 if test "$FAILED" = "yes"; then
    185 	exit 1
    186 fi
    187 }
    188 main "$@"