#!/bin/bash

set -ueo pipefail

home=$(mktemp -d "${AUTOPKGTEST_TMP-/tmp}/home.XXXXXXXXXX")
echo "Using '$home' as home directory."

proxy_config() {
     local protocol="$1"
     local proxy
     proxy=$(echo "$2" | sed 's@https\?://@@;s@/$@@')
     cat <<EOF
    <proxy>
      <id>${protocol}_proxy</id>
      <active>true</active>
      <protocol>${protocol}</protocol>
      <host>${proxy%:*}</host>
      <port>${proxy##*:}</port>
      <username></username>
      <password></password>
      <nonProxyHosts></nonProxyHosts>
    </proxy>
EOF
}

if test -n "${http_proxy-}${https_proxy-}"; then
     setting_conf="$home/.m2/settings.xml"
     mkdir -p "${setting_conf%/*}"
     {
          printf "<settings>\n  <proxies>\n"
          test -z "${http_proxy-}" || proxy_config http "${http_proxy}"
          test -z "${https_proxy-}" || proxy_config https "${https_proxy}"
          printf "  </proxies>\n</settings>\n"
     } >"$setting_conf"

     echo ">>>>>>>>>>>>>>>>>>>> .m2/settings.xml >>>>>>>>>>>>>>>>>>>>"
     cat "$setting_conf"
     echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
fi

cp=($(< debian/libtools-build-clojure.classpath))
test "${cp[0]}" = usr/share/java/tools.build.jar
unset cp[0] # drop it

test_cp=(src/main/clojure
         src/test/clojure
         /usr/share/java/test-runner.jar
         /usr/share/java/maven-resolver-named-locks.jar
         /usr/share/java/maven-repository-metadata-3.x.jar
         "${cp[@]}")

test_cp="$(IFS=:; echo "${test_cp[*]}")"

# Derived from ./deps.edn, and avoids a circular dep on clojure-cli
java -Duser.home="$home" -XX:-OmitStackTraceInFastThrow -cp "$test_cp" clojure.main \
     -m cognitect.test-runner cognitect.test-runner.api/test \
     --dir src/test/clojure --namespace-regex '.*'
