#!/bin/bash
set -e

export PRTE_MCA_plm_ssh_agent=/bin/false
export PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe
export OMPI_MCA_btl_base_warn_component_unused=0
export OMPI_MCA_btl_tcp_if_include=lo   # avoid complaints about unreachable pairing between local and remote

DEB_HOST_ARCH_BITS=$(dpkg-architecture -qDEB_HOST_ARCH_BITS)

TEST_ARGS="--verbose -j${NPROC}"

# some 64-bit tests are expected to fail on 32-bit systems
# so list tests to skip in array variable SKIP_TEST_LIST
declare -a SKIP_TEST_LIST

if [ "$DEB_HOST_ARCH_BITS" = "32" -a "$SCOTCH_SONAME_SUFFIX" = "_64i" ]; then
    SKIP_TEST_LIST=("${SKIP_TEST_LIST[@]}" test_common_random)
fi


SKIP_TESTS=""
list_initialised=0
for t in "${SKIP_TEST_LIST[@]}"; do
    if [ ${list_initialised} = 0 ]; then
        SKIP_TESTS=$t
        list_initialised=1
    else
        # cmake uses | for "or" in regex, https://cmake.org/cmake/help/latest/command/string.html#regex-specification
        SKIP_TESTS="${SKIP_TESTS}|$t"
    fi
done
NPROC=`nproc`
echo "Running scotch tests using ${NPROC} processes"

if [ "x${SKIP_TESTS}" != "x" ]; then
    echo "skipping tests: ${SKIP_TESTS}"
    TEST_ARGS="${TEST_ARGS} -E \"${SKIP_TESTS}\""
fi

TESTDIR=$PWD/src/check/runcheck${BUILD_PTSCOTCH:+_pt}${SCOTCH_SONAME_SUFFIX}

mkdir ${TESTDIR}
cd ${TESTDIR}

cmake -DSCOTCH_TEST_STANDALONE=1 \
    -DSCOTCH_SONAME_SUFFIX=${SCOTCH_SONAME_SUFFIX}  \
    -DBUILD_PTSCOTCH=${BUILD_PTSCOTCH} \
    ..
make
make -j${NPROC} test ARGS\+="${TEST_ARGS}"
