Squashed 'third_party/libevent/' content from commit d8ceae8

Change-Id: I84e1b23561eb225b9f288717b028e6bc9e5a27e1
git-subtree-dir: third_party/libevent
git-subtree-split: d8ceae81b83f3d0a56e2f41d4c429b2702a8e302
diff --git a/test/test.sh b/test/test.sh
new file mode 100755
index 0000000..08a4cdd
--- /dev/null
+++ b/test/test.sh
@@ -0,0 +1,163 @@
+#!/bin/sh
+
+FAILED=no
+
+if test "x$TEST_OUTPUT_FILE" = "x"
+then
+	TEST_OUTPUT_FILE=/dev/null
+fi
+
+# /bin/echo is a little more likely to support -n than sh's builtin echo,
+# printf is even more likely
+if test "`printf %s hello 2>&1`" = "hello"
+then
+	ECHO_N="printf %s"
+else
+	if test -x /bin/echo
+	then
+		ECHO_N="/bin/echo -n"
+	else
+		ECHO_N="echo -n"
+	fi
+fi
+
+if test "$TEST_OUTPUT_FILE" != "/dev/null"
+then
+	touch "$TEST_OUTPUT_FILE" || exit 1
+fi
+
+TEST_DIR=.
+
+T=`echo "$0" | sed -e 's/test.sh$//'`
+if test -x "$T/test-init"
+then
+	TEST_DIR="$T"
+fi
+
+setup () {
+	EVENT_NOKQUEUE=yes; export EVENT_NOKQUEUE
+	EVENT_NODEVPOLL=yes; export EVENT_NODEVPOLL
+	EVENT_NOPOLL=yes; export EVENT_NOPOLL
+	EVENT_NOSELECT=yes; export EVENT_NOSELECT
+	EVENT_NOEPOLL=yes; export EVENT_NOEPOLL
+	unset EVENT_EPOLL_USE_CHANGELIST
+	EVENT_NOEVPORT=yes; export EVENT_NOEVPORT
+	EVENT_NOWIN32=yes; export EVENT_NOWIN32
+}
+
+announce () {
+	echo "$@"
+	echo "$@" >>"$TEST_OUTPUT_FILE"
+}
+
+announce_n () {
+	$ECHO_N "$@"
+	echo "$@" >>"$TEST_OUTPUT_FILE"
+}
+
+
+run_tests () {
+	if $TEST_DIR/test-init 2>>"$TEST_OUTPUT_FILE" ;
+	then
+		true
+	else
+		announce Skipping test
+		return
+	fi
+
+	announce_n " test-eof: "
+	if $TEST_DIR/test-eof >>"$TEST_OUTPUT_FILE" ;
+	then
+		announce OKAY ;
+	else
+		announce FAILED ;
+		FAILED=yes
+	fi
+	announce_n " test-weof: "
+	if $TEST_DIR/test-weof >>"$TEST_OUTPUT_FILE" ;
+	then
+		announce OKAY ;
+	else
+		announce FAILED ;
+		FAILED=yes
+	fi
+	announce_n " test-time: "
+	if $TEST_DIR/test-time >>"$TEST_OUTPUT_FILE" ;
+	then
+		announce OKAY ;
+	else
+		announce FAILED ;
+		FAILED=yes
+	fi
+	announce_n " test-changelist: "
+	if $TEST_DIR/test-changelist >>"$TEST_OUTPUT_FILE" ;
+	then
+		announce OKAY ;
+	else
+		announce FAILED ;
+		FAILED=yes
+	fi
+	test -x $TEST_DIR/regress || return
+	announce_n " regress: "
+	if test "$TEST_OUTPUT_FILE" = "/dev/null" ;
+	then
+		$TEST_DIR/regress --quiet
+	else
+		$TEST_DIR/regress >>"$TEST_OUTPUT_FILE"
+	fi
+	if test "$?" = "0" ;
+	then
+		announce OKAY ;
+	else
+		announce FAILED ;
+		FAILED=yes
+	fi
+}
+
+announce "Running tests:"
+
+# Need to do this by hand?
+setup
+unset EVENT_NOEVPORT
+announce "EVPORT"
+run_tests
+
+setup
+unset EVENT_NOKQUEUE
+announce "KQUEUE"
+run_tests
+
+setup
+unset EVENT_NOEPOLL
+announce "EPOLL"
+run_tests
+
+setup
+unset EVENT_NOEPOLL
+EVENT_EPOLL_USE_CHANGELIST=yes; export EVENT_EPOLL_USE_CHANGELIST
+announce "EPOLL (changelist)"
+run_tests
+
+setup
+unset EVENT_NODEVPOLL
+announce "DEVPOLL"
+run_tests
+
+setup
+unset EVENT_NOPOLL
+announce "POLL"
+run_tests
+
+setup
+unset EVENT_NOSELECT
+announce "SELECT"
+run_tests
+
+setup
+unset EVENT_NOWIN32
+announce "WIN32"
+run_tests
+
+if test "$FAILED" = "yes"; then
+	exit 1
+fi