Add a "skip" feature in ssl-opt.sh
diff --git a/tests/ssl-opt.sh b/tests/ssl-opt.sh
index c56639f..923ea14 100755
--- a/tests/ssl-opt.sh
+++ b/tests/ssl-opt.sh
@@ -10,14 +10,6 @@
set -u
-# test if it is defined from the environment before assining default
-# if yes, assume it means it's a build with all the options we need (SSLv2)
-if [ -n "${OPENSSL_CMD:-}" ]; then
- OPENSSL_OK=1
-else
- OPENSSL_OK=0
-fi
-
# default values, can be overriden by the environment
: ${P_SRV:=../programs/ssl/ssl_server2}
: ${P_CLI:=../programs/ssl/ssl_client2}
@@ -28,16 +20,13 @@
TESTS=0
FAILS=0
+SKIPS=0
CONFIG_H='../include/polarssl/config.h'
MEMCHECK=0
FILTER='.*'
-if [ "$OPENSSL_OK" -gt 0 ]; then
- EXCLUDE='^$'
-else
- EXCLUDE='SSLv2'
-fi
+EXCLUDE='^$'
print_usage() {
echo "Usage: $0 [options]"
@@ -73,6 +62,20 @@
done
}
+# skip next test if OpenSSL can't send SSLv2 ClientHello
+requires_openssl_with_sslv2() {
+ if [ -z "${OPENSSL_HAS_SSL2:-}" ]; then
+ if openssl ciphers -ssl2 >/dev/null 2>&1; then
+ OPENSSL_HAS_SSL2="YES"
+ else
+ OPENSSL_HAS_SSL2="NO"
+ fi
+ fi
+ if [ "$OPENSSL_HAS_SSL2" = "NO" ]; then
+ SKIP_NEXT="YES"
+ fi
+}
+
# print_name <name>
print_name() {
echo -n "$1 "
@@ -148,6 +151,14 @@
print_name "$NAME"
+ # should we skip?
+ if [ "X$SKIP_NEXT" = "XYES" ]; then
+ SKIP_NEXT="NO"
+ echo "SKIP"
+ SKIPS=`echo $SKIPS + 1 | bc`
+ return
+ fi
+
# prepend valgrind to our commands if active
if [ "$MEMCHECK" -gt 0 ]; then
if is_polar "$SRV_CMD"; then
@@ -329,6 +340,8 @@
CLI_OUT="cli_out.$$"
SESSION="session.$$"
+SKIP_NEXT="NO"
+
trap cleanup INT TERM HUP
# Basic test
@@ -342,6 +355,7 @@
# Test for SSLv2 ClientHello
+requires_openssl_with_sslv2
run_test "SSLv2 ClientHello #0 (reference)" \
"$P_SRV debug_level=3" \
"$O_CLI -no_ssl2" \
@@ -350,6 +364,7 @@
-S "ssl_handshake returned"
# Adding a SSL2-only suite makes OpenSSL client send SSLv2 ClientHello
+requires_openssl_with_sslv2
run_test "SSLv2 ClientHello #1 (actual test)" \
"$P_SRV debug_level=3" \
"$O_CLI -cipher 'DES-CBC-MD5:ALL'" \
@@ -1745,6 +1760,6 @@
echo -n "FAILED"
fi
PASSES=`echo $TESTS - $FAILS | bc`
-echo " ($PASSES / $TESTS tests)"
+echo " ($PASSES / $TESTS tests ($SKIPS skipped))"
exit $FAILS