diff options
Diffstat (limited to 'tests/configure_test.sh')
-rw-r--r-- | tests/configure_test.sh | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/tests/configure_test.sh b/tests/configure_test.sh new file mode 100644 index 0000000..a374779 --- /dev/null +++ b/tests/configure_test.sh @@ -0,0 +1,207 @@ +#!/bin/sh + +# These tests check that the requested configuration can be made and can be built +# In many cases it will check that the Shairport Sync configuration string +# contains or omits the relevant string +# If doesn't check for the presence or absence of products except +# when it checks for the configuration string + +# To get it to work first time, and assuming you have already build Shairport Sync according to the standard +# you need the following extra libraries in Linux: +# libmbedtls-dev libpolarssl-dev libjack-dev libsndio-dev libao-dev libpulse-dev libsndfile1-dev libavahi-compat-libdnssd-dev libglib2.0-dev libmosquitto-dev +# Also, you'll need to build the ALAC library -- see https://github.com/mikebrady/alac. + +# At present, it is Linux-only. +check_configuration_string_includes() +{ + echo -n " checking configuration string includes \"$1\"..." + ./shairport-sync -V | grep -q $1 + if [ "$?" -eq "1" ] ; then + echo "\nError: \"$1\" not included in configuration string. See \"../configure_test.log\"." + exit 1 + fi + echo -n "ok" +} + +check_configuration_string_excludes() +{ + echo -n " checking configuration string excludes \"$1\"..." + ./shairport-sync -V | grep -q $1 + if [ "$?" -eq "0" ] ; then + echo "\nError: \"$1\" is unexpectedly included in the configuration string. See \"../configure_test.log\"." + exit 1 + fi + echo -n "ok" +} +check_for_success() +{ + if [ "$2" = "x" ] ; then + A2="" + else + A2="$2" + fi + if [ "$3" = "x" ] ; then + A3="" + else + A3="$3" + fi + if [ "$4" = "x" ] ; then + A4="" + else + A4="$4" + fi + if [ "$5" = "x" ] ; then + A5="" + else + A5=$5 + fi + if [ "$1" = "x" -o "$1" = "x$A2" ] ; then + TESTCOUNT="$(expr "$TESTCOUNT" '+' '1')" + echo -n "Checking \"$A2\": " + echo -n "configuring..." + echo "./configure $A3 $A2" > $LOGFILE + ./configure $A3 $A2 >> $LOGFILE 2>&1 + if [ "$?" -eq "0" ] ; then + echo -n "ok making..." + echo "make clean" >> $LOGFILE + make clean >> $LOGFILE 2>&1 + echo "make -j $((`nproc`*2))" >> $LOGFILE + make -j $((`nproc`*2)) >> $LOGFILE 2>&1 + if [ "$?" -ne "0" ] ; then + echo "\nError at build step with arg \"$A2\". See \"../configure_test.log\"." + exit 1 + fi + echo -n "ok" + else + echo "\nError at configure step with arg \"$A2\". See \"../configure_test.log\"." + exit 1 + fi + if [ "$A4" != "" ] ; then + check_configuration_string_includes $A4 + fi + if [ "$A5" != "" ] ; then + check_configuration_string_excludes $A5 + fi + echo "." + fi +} + +check_for_configuration_fail() +{ + if [ "$1" = "x" -o "$1" = "x$2" ] ; then + echo -n "Checking \"$2\" fails during configuration... " + TESTCOUNT="$(expr "$TESTCOUNT" '+' '1')" + ./configure $3 $2 > $LOGFILE 2>&1 + if [ "$?" -eq "0" ] ; then + echo "\nError: configuration did not fail with arg \"$2\". See \"../configure_test.log\"." + exit 1 + fi + echo " done." + fi + return 0 +} + +echo -n "Preparing..." +LOGFILE=configure_test.log +CWD=`pwd` +cd .. +autoreconf -fi > $LOGFILE 2>&1 +if [ "$?" -ne "0" ] ; then + echo " error running \"autoreconf -fi\" -- see \"../configure_test.log\"." + exit 1 +fi +echo "ok." +TESTCOUNT=0 +check_for_success x$1 --with-pkg-config --with-ssl=mbedtls +check_for_success x$1 --with-ssl=openssl x OpenSSL +check_for_success x$1 --with-ssl=mbedtls x mbedTLS +check_for_success x$1 --with-ssl=polarssl x PolarSSL +check_for_configuration_fail x$1 --with-ssl +check_for_configuration_fail x$1 --without-ssl=openssl +check_for_configuration_fail x$1 --without-ssl=mbedtls +check_for_configuration_fail x$1 --without-ssl=polarssl +check_for_configuration_fail x$1 +check_for_success x$1 --with-alsa --with-ssl=mbedtls ALSA +check_for_success x$1 --without-alsa --with-ssl=mbedtls x ALSA + +check_for_success x$1 --with-dummy --with-ssl=mbedtls dummy +check_for_success x$1 --without-dummy --with-ssl=mbedtls x dummy + +check_for_success x$1 --with-stdout --with-ssl=mbedtls stdout +check_for_success x$1 --without-stdout --with-ssl=mbedtls x stdout + +check_for_success x$1 --with-pipe --with-ssl=mbedtls pipe +check_for_success x$1 --without-pipe --with-ssl=mbedtls x pipe + +check_for_success x$1 --with-external-mdns --with-ssl=mbedtls external_mdns +check_for_success x$1 --without-external-mdns --with-ssl=mbedtls x external_mdns + +check_for_success x$1 --with-apple-alac --with-ssl=mbedtls alac +check_for_success x$1 --without-apple-alac --with-ssl=mbedtls x alac + +check_for_success x$1 --with-piddir=/var --with-ssl=mbedtls +check_for_success x$1 --without-piddir --with-ssl=mbedtls + +check_for_success x$1 --with-libdaemon --with-ssl=mbedtls +check_for_success x$1 --without-libdaemon --with-ssl=mbedtls + +check_for_success x$1 --with-soxr --with-ssl=mbedtls soxr +check_for_success x$1 --without-soxr --with-ssl=mbedtls x soxr + +check_for_success x$1 --with-metadata --with-ssl=mbedtls metadata +check_for_success x$1 --without-metadata --with-ssl=mbedtls x metadata + +check_for_success x$1 --with-avahi --with-ssl=mbedtls Avahi +check_for_success x$1 --without-avahi --with-ssl=mbedtls x Avahi + +check_for_success x$1 --with-tinysvcmdns --with-ssl=mbedtls tinysvcmdns +check_for_success x$1 --without-tinysvcmdns --with-ssl=mbedtls x tinysvcmdns + +check_for_success x$1 --with-jack --with-ssl=mbedtls jack +check_for_success x$1 --without-jack --with-ssl=mbedtls x jack + +check_for_success x$1 --with-sndio --with-ssl=mbedtls sndio +check_for_success x$1 --without-sndio --with-ssl=mbedtls x sndio + +check_for_success x$1 --with-ao --with-ssl=mbedtls ao +check_for_success x$1 --without-ao --with-ssl=mbedtls x ao + +# the following is disabled because there is no soundio library for Raspberry OS +#check_for_success x$1 --with-soundio --with-ssl=mbedtls soundio +check_for_success x$1 --without-soundio --with-ssl=mbedtls x soundio + +check_for_success x$1 --with-pa --with-ssl=mbedtls pa +check_for_success x$1 --without-pa --with-ssl=mbedtls x pa + +check_for_success x$1 --with-convolution --with-ssl=mbedtls convolution +check_for_success x$1 --without-convolution --with-ssl=mbedtls x convolution + +check_for_success x$1 --with-dns_sd --with-ssl=mbedtls dns_sd +check_for_success x$1 --without-dns_sd --with-ssl=mbedtls x dns_sd + +check_for_success x$1 --with-dbus-interface --with-ssl=mbedtls metadata-dbus +check_for_success x$1 --without-dbus-interface --with-ssl=mbedtls x dbus + +check_for_success x$1 --with-dbus-test-client --with-ssl=mbedtls +check_for_success x$1 --without-dbus-test-client --with-ssl=mbedtls + +check_for_success x$1 --with-mpris-interface --with-ssl=mbedtls metadata-mpris +check_for_success x$1 --without-mpris-interface --with-ssl=mbedtls x mpris + +check_for_success x$1 --with-mpris-test-client --with-ssl=mbedtls +check_for_success x$1 --without-mpris-test-client --with-ssl=mbedtls + +check_for_success x$1 --with-mqtt-client --with-ssl=mbedtls metadata-mqtt +check_for_success x$1 --without-mqtt-client --with-ssl=mbedtls x mqtt + +check_for_success x$1 --with-configfiles '--sysconfdir=/etc --with-alsa --with-soxr --with-avahi --with-ssl=openssl --with-systemd' OpenSSL-Avahi-ALSA-soxr-sysconfdir:/etc +check_for_success x$1 --without-configfiles '--sysconfdir=/etc --with-alsa --with-soxr --with-avahi --with-ssl=openssl --with-systemd' OpenSSL-Avahi-ALSA-soxr-sysconfdir:/etc + +check_for_success x$1 --with-systemd '--sysconfdir=/etc --with-alsa --with-soxr --with-avahi --with-ssl=openssl' OpenSSL-Avahi-ALSA-soxr-sysconfdir:/etc +check_for_success x$1 --without-systemd '--sysconfdir=/etc --with-alsa --with-soxr --with-avahi --with-ssl=openssl' OpenSSL-Avahi-ALSA-soxr-sysconfdir:/etc +check_for_success x$1 --with-systemv '--sysconfdir=/etc --with-libdaemon --with-alsa --with-soxr --with-avahi --with-ssl=openssl' OpenSSL-Avahi-ALSA-soxr-sysconfdir:/etc +check_for_success x$1 --without-systemv '--sysconfdir=/etc --with-libdaemon --with-alsa --with-soxr --with-avahi --with-ssl=openssl' OpenSSL-Avahi-ALSA-soxr-sysconfdir:/etc + +cd $CWD +echo "$TESTCOUNT tests completed." + |