#!/bin/bash

set -e

function zmq_version {
    echo $(\
        PERL5LIB=lib:$PERL5LIB \
        perl -M'ZMQ::FFI::Util q(zmq_version)' \
        -E 'print join " ",zmq_version'\
    )
}

function travis_test {
    major_version=$1

    # install the libzmq version we need
    case $major_version in

        2)
            wget https://launchpad.net/ubuntu/+archive/primary/+files/libzmq1_2.1.11-1ubuntu1_amd64.deb -qO /tmp/libzmq1.deb
            sudo dpkg -i /tmp/libzmq1.deb
            ;;
        3)
            sudo add-apt-repository -y ppa:bpaquet/zeromq3-precise
            sudo apt-get -y update
            sudo apt-get -y install libzmq1
            ;;
        4)
            sudo add-apt-repository -y ppa:bpaquet/zeromq4-precise
            sudo apt-get -y update
            sudo apt-get -y install libzmq1
            ;;

        devel)
            tmpdir=`mktemp -d`
            git clone https://github.com/zeromq/libzmq.git $tmpdir
            ( cd $tmpdir
              ./autogen.sh
              ./configure --without-libsodium
              make -j2 )
            export LD_LIBRARY_PATH=$tmpdir/src/.libs
            ;;
    esac

    # sanity test
    ver=($(zmq_version))
    if [[ "${ver[0]}" != "$major_version" && "$major_version" != "devel" ]];
    then
        echo "unexpected version ${ver[0]} != $major_version"
        exit 1
    fi

    echo -e "\nTesting zeromq" \
        "$(echo ${ver[@]} | tr ' ' '.')"

    run_prove
}

function local_test {
    major_version=$1

    case $major_version in
        [2-4])
            export LD_LIBRARY_PATH="$HOME/git/zeromq$1-x/src/.libs"
            ;;
        devel)
            export LD_LIBRARY_PATH="$HOME/git/libzmq/src/.libs"
            ;;
    esac

    echo -e "\nTesting zeromq" \
        "$(zmq_version | tr ' ' '.')"

    run_prove
}

function run_prove {
    prove -lvr t

    # test with different locale
    LANG=fr_FR.utf8 prove -lvr t
}

for v in 2 3 4 devel
do
    if [[ -n $TRAVIS ]]
    then
        travis_test $v
    else
        local_test $v
    fi
done

# extra test to verify sonames arg is honored
if [[ -z $TRAVIS ]]
then
    LD_LIBRARY_PATH="$HOME/git/zeromq2-x/src/.libs:"
    LD_LIBRARY_PATH+="$HOME/git/zeromq3-x/src/.libs:"
    export LD_LIBRARY_PATH
else
    sudo dpkg -i /tmp/libzmq1.deb
    sudo apt-get -y install libzmq3
fi

PERL5LIB=lib:$PERL5LIB perl xt/sonames.pl