#!/usr/bin/env bash

set -euo pipefail

copy_logs() 
{
    echo "INFO: copy logfiles"
    DESTINATION="${AUTOPKGTEST_ARTIFACTS}/regular-tests/logs"
    mkdir -p "${DESTINATION}"
    cp "${AUTOPKGTEST_TMP}/test-runner/"*.log "${DESTINATION}"
    cp "${AUTOPKGTEST_TMP}/test-runner/results.xml" "${DESTINATION}/.."
}

PACKAGE_ROOT="$(pwd)"
export HOME="${AUTOPKGTEST_TMP}"
trap copy_logs EXIT

set -x

echo "INFO: extract source build artifacts"
mkdir -p "${AUTOPKGTEST_TMP}/packages"
tar --extract --gzip --directory "${AUTOPKGTEST_TMP}/packages" \
  --file "$(debian/eng/print-source-build-artifact-path)"

echo "INFO: add source build artifacts to global NuGet config"
mkdir -p ~/.nuget/NuGet/
cat <<EOF > ~/.nuget/NuGet/NuGet.Config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <packageSources>
   <add key="source-build" value="${AUTOPKGTEST_TMP}/packages" />
   <add key="system-commandline-nightly" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-libraries/nuget/v3/index.json" />
   <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
 </packageSources>
</configuration>
EOF

echo "INFO: copy test-runner to test directory"
cp --recursive "debian/eng/test-runner" "${AUTOPKGTEST_TMP}"

echo "INFO: copy regular-tests to test directory"
cp --recursive "debian/tests/regular-tests" "${AUTOPKGTEST_TMP}"

cd "${AUTOPKGTEST_TMP}/test-runner"

echo "INFO: build test-runner"
make

echo "INFO: run test-runner self-tests"
make check

echo "INFO: create test user"
chmod --recursive 777 "${AUTOPKGTEST_TMP}"
useradd testrunner --create-home
mkdir -p /home/testuser/.nuget/NuGet/
cp ~/.nuget/NuGet/NuGet.Config /home/testuser/.nuget/NuGet/
chown --recursive testrunner:testrunner /home/testuser/

echo "INFO: run regular-tests"
set +e 
dotnet turkey/Turkey.dll "$AUTOPKGTEST_TMP/regular-tests"
set -e
"${PACKAGE_ROOT}/debian/eng/check-test-results"
