#!/bin/sh

set -eu

usage() {
  echo "usage: debci localtest [OPTIONS] PACKAGE"
  echo "$@"
}


debci_base_dir=$(readlink -f $(dirname $(readlink -f $0))/..)
. $debci_base_dir/lib/environment.sh
. $debci_base_dir/lib/functions.sh
prepare_args

pkg="$1"
shift
logs="$(mktemp --directory --tmpdir debci-localtest.XXXXXXXXXX)"

# these variables can be considered as an API by backends/*/test-package and
# debci-autopkgtest
export debci_suite
export debci_arch
export debci_arch_base
export debci_arch_variant
export debci_autopkgtest_args
### <ci.ai.debian.net> ###
# TODO ckk: Remove the '+' from the backend name
if [ "${debci_backend:-}" = "qemu+rocm" ]; then
  export debci_autopkgtest_args_qemurocm
elif [ "${debci_backend:-}" = "podman+rocm" ]; then
  export debci_autopkgtest_args_podmanrocm
elif [ "${debci_backend:-}" = "qemu+cuda" ]; then
  export debci_autopkgtest_args_qemucuda
else
  eval ': "${debci_autopkgtest_args_'"$debci_backend"':=}"'
  eval "export debci_autopkgtest_args_$debci_backend"
fi
### </ci.ai.debian.net> ###
export debci_test_package="$pkg"
export debci_test_outputdir="$logs"

extra_opts=
if [ -t 1 ]; then
  extra_opts=--shell-fail
fi
rc=0

# <ci.ai.debian.net>
# Enable bailing out early, eg: after health checks
if [ -n "$debci_hook_pretest" ]; then
  sh -c "$debci_hook_pretest" || exit 1
fi
# </ci.ai.debian.net>

test-package --output-dir="$logs" $extra_opts "$pkg" "$@" || rc="$?"

# <ci.ai.debian.net>
# Can't bail out at this point, as the job would be returned to the queue
if [ -n "$debci_hook_posttest" ]; then
  sh -c "$debci_hook_posttest" || true
fi
# </ci.ai.debian.net>

echo "I: test artifacts available at $logs"
exit "$rc"
