#!/bin/sh

exec 2>&1
set -e

banner() {
  echo
  echo "$@"
  echo "$@" | sed -e 's/./-/g'
  echo
}

export HOME="${AUTOPKGTEST_TMP}"

export REBAR=/usr/bin/rebar

epmd -daemon

failed=0

# The Elixir tests are very sensitive to the place they are located relatively
# to the elixir executable via which they are invoked. Moreover, the tests
# depend on some files which are parts of the source tree.

cp VERSION /usr/lib/elixir

cp lib/iex/mix.exs /usr/lib/elixir/lib/iex

cp -r lib/elixir/src /usr/lib/elixir/lib/elixir

for lib in $(ls lib); do
  cp -r "lib/${lib}/lib" "lib/${lib}/test" "/usr/lib/elixir/lib/${lib}"
done

(
  banner stdlib
  cd /usr/lib/elixir/lib/elixir
  elixir -r "test/elixir/test_helper.exs" -pr "test/elixir/**/*_test.exs"
) || failed=1

for lib in $(ls -1 lib | grep -v elixir); do
  (
    banner $lib
    set -x
    cd "/usr/lib/elixir/lib/${lib}"
    elixir -r "test/test_helper.exs" -pr "test/**/*_test.exs"
  ) || failed=1
done

# cleanup

rm    /usr/lib/elixir/VERSION
rm    /usr/lib/elixir/lib/iex/mix.exs
rm -r /usr/lib/elixir/lib/elixir/src

for lib in $(ls lib); do
  rm -r "/usr/lib/elixir/lib/${lib}/lib" "/usr/lib/elixir/lib/${lib}/test"
done

epmd -kill

exit $failed

