#!/bin/bash
set -efu

TESTDIR=runtests
mkdir $TESTDIR
cp -a /usr/lib/python3/dist-packages/pymatgen $TESTDIR
for t in `find pymatgen -name tests`; do
  d=`dirname $t`
  cp -a $t $TESTDIR/$d
done

arch=$(dpkg-architecture -qDEB_HOST_ARCH)

# some tests are expected to fail
# so list tests to skip in array variable SKIP_TEST_LIST
declare -a SKIP_TEST_LIST

# io/qchem is partly broken, skip failing tests
# io/qchem input
SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_from_multi_jobs_file test_from_string test_read_molecule test_read_nbo test_read_negative test_read_plots test_read_write_nbo7)
# io/qchem output
SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_all test_custom_smd_write)
# io/qchem sets (test_sets.py all fail)
SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_sets)
# test_rotor_search_rrs of io test_babel.py intermittently times out
SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_rotor_search_rrs)

# these io tests fail in chroot
SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_CifWriter test_read_write test_init test_get_site_symmetries)

if [ "$arch" = "arm64" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_get_parchg)
fi

if [ "$arch" = "i386" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_get_parchg)
fi

if [ "$arch" = "mips64el" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_pca)
fi

if [ "$arch" = "ppc64el" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_get_parchg)
fi

if [ "$arch" = "s390x" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_spillage_from_vasprun test_from_file test_optics test__generate_G_points test__generate_nbmax test_evaluate_wavefunc)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_fft_mesh_advanced test_fft_mesh_basic test_get_parchg test_n2_45210 test_n2_spin test_standard test_write_unks test_consistency)
fi

if [ "$arch" = "riscv64" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_get_parchg)
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
        SKIP_TESTS="${SKIP_TESTS} or $t"
    fi
done
if [ "x${SKIP_TESTS}" != "x" ]; then
    SKIP_TESTS="not ( ${SKIP_TESTS} )"
fi
echo "skipping tests with SKIP_TEST_LIST=${SKIP_TEST_LIST[@]}"

PMG_TEST_FILES_DIR=/usr/share/doc/pymatgen-test-files/examples/test_files \
  pytest-3 -vv --color=no  -k "${SKIP_TESTS}" $TESTDIR
