#!/bin/bash
set -e

# allow for the possibility that MPI tests are run
# on systems with a single CPU
export PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe

# test_original_checkpoint randomly times out, see Bug#1091613
TEST_SELECTION="not test_original_checkpoint"

# s390x segfaults in all known tests. Something is amiss.
# Adios2 upstream acknowledges big-endian support is not tested.
# (some adios2 and dolfinx VTX tests fail, some pass)
# Assume all big-endian systems will fail adios4dolfinx and skip them all.
DEB_HOST_ARCH_ENDIAN=$(dpkg-architecture -qDEB_HOST_ARCH_ENDIAN)
if [ "x${DEB_HOST_ARCH_ENDIAN}" = "xbig" ]; then
  echo "Adios2 support is not tested on big-endian systems."
else
  n_proc=`nproc`
  echo "${n_proc} CPUs are available"
  for pyver in `py3versions -sv`; do
    # By default, pytest tmp_path retains the temporary directory for the last 3
    # pytest invocations.
    # Using the --basetemp option will remove the directory before every run,
    # effectively meaning the temporary directories of only the most recent run
    # will be kept. We definitely do not want to keep old runs, because they may
    # result in adios4dolfinx trying to read in output files generated with a
    # different PETSc scalar type (real vs complex).
    ${MPIEXEC} python$pyver -m pytest --basetemp=${AUTOPKGTEST_TMP} -svv --color=no -k "${TEST_SELECTION}" tests
  done
fi
