REGTEST: script: Add support of alternatives in requited options list
It is now possible to specify a list of "alternatives" for a required
option. This must be done by separating options by a pipe ('|'). A test will be
executed if at least one of them is available. For instance:
#REQUIRED_OPTIONS=ZLIB|SLZ,LUA,OPENSSL
The function _findtest() has also been sligthly simplified.
diff --git a/scripts/run-regtests.sh b/scripts/run-regtests.sh
index d10a43e..80353de 100755
--- a/scripts/run-regtests.sh
+++ b/scripts/run-regtests.sh
@@ -48,7 +48,7 @@
# Below option is required to complete this test succesfully
#REQUIRE_OPTION=OPENSSL, this test needs OPENSSL compiled in.
- #REQUIRE_OPTIONS=ZLIB,OPENSSL,LUA
+ #REQUIRE_OPTIONS=ZLIB|SLZ,OPENSSL,LUA
# To define a range of versions that a test can run with:
#REQUIRE_VERSION=0.0
@@ -156,8 +156,18 @@
skiptest=
require_version="$(sed -ne 's/^#REQUIRE_VERSION=//p' "$i")"
require_version_below="$(sed -ne 's/^#REQUIRE_VERSION_BELOW=//p' "$i")"
- require_options="$(sed -ne 's/^#REQUIRE_OPTIONS=//p' "$i")"
- exclude_targets=",$(sed -ne 's/^#EXCLUDE_TARGETS=//p' "$i"),"
+ require_options="$(sed -ne 's/^#REQUIRE_OPTIONS=//p' "$i" | sed -e 's/,/ /g')"
+ exclude_targets="$(sed -ne 's/^#EXCLUDE_TARGETS=//p' "$i" | sed -e 's/,/ /g')"
+
+ requiredoption="$(sed -ne 's/^#REQUIRE_OPTION=//p' "$i" | sed -e 's/,.*//')"
+ if [ -n "$requiredoption" ]; then
+ require_options="$require_options $requiredoption"
+ fi
+
+ excludedtarget="$(sed -ne 's/^#EXCLUDE_TARGET=//p' "$i" | sed -e 's/,.*//')"
+ if [ -n "$excludedtarget" ]; then
+ exclude_targets="$exclude_targets $excludedtarget"
+ fi
if [ -n "$require_version" ]; then
if [ $(_version "$HAPROXY_VERSION") -lt $(_version "$require_version") ]; then
@@ -174,46 +184,26 @@
fi
fi
- if [ -n "$( echo "$exclude_targets" | grep ",$TARGET," )" ]; then
- echo " Skip $i because exclude_targets"
- echo " REASON: exclude_targets '$exclude_targets' contains '$TARGET'"
- skiptest=1
- fi
-
- #echo "REQUIRE_OPTIONS : $require_options"
- for requiredoption in $(echo $require_options | tr "," "\012" ); do
- if [ -z "$( echo "$OPTIONS" | grep "USE_$requiredoption=1" )" ]
- then
- echo " Skip $i because option $requiredoption not found"
- echo -n " REASON: "
- echo -n "$required" | sed -e 's/.*,//' -e 's/^[[:space:]]//'
- echo
+ for excludedtarget in $exclude_targets; do
+ if [ "$excludedtarget" = "$TARGET" ]; then
+ echo " Skip $i because haproxy is compiled for the excluded target $TARGET"
skiptest=1
fi
done
- for required in "$(grep "#REQUIRE_OPTION=" "$i")";
- do
- if [ -z "$required" ]
- then
- continue
- fi
- requiredoption=$(echo "$required" | sed -e 's/.*=//' -e 's/,.*//')
- if [ -z "$( echo "$OPTIONS" | grep "USE_$requiredoption=1" )" ]
- then
- echo " Skip $i because option $requiredoption not found"
- echo -n " REASON: "
- echo "$required" | sed -e 's/.*,//' -e 's/^[[:space:]]//'
+
+ for requiredoption in $require_options; do
+ alternatives=$(echo "$requiredoption" | sed -e 's/|/ /g')
+ found=
+ for alt in $alternatives; do
+ if [ -n "$( echo "$OPTIONS" | grep "USE_$alt=1" )" ]; then
+ found=1;
+ fi
+ done
+ if [ -z $found ]; then
+ echo " Skip $i because haproxy is not compiled with the required option $requiredoption"
skiptest=1
fi
done
- testtarget=$(grep "#EXCLUDE_TARGET=" "$i")
- if [ "$( echo "$testtarget" | grep "#EXCLUDE_TARGET=$TARGET," )" ]
- then
- echo " Skip $i because: TARGET = $TARGET"
- echo -n " REASON: "
- echo "$testtarget" | sed -e 's/.*,//' -e 's/^[[:space:]]//'
- skiptest=1
- fi
if [ -z $skiptest ]; then
echo " Add test: $i"