#! /bin/sh
# Copyright 2018 Google LLC.
# Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.

# If you have more than one device attached, run `adb devices -l` and then set
# the ANDROID_SERIAL environment variable to the correct serial number.

APK="$1"
shift

if ! [ -f "$APK" ]; then
    cat >&2 <<- EOM

	Usage:
	  $0 SKQP_APK_FILE_PATH [OPTIONAL_TESTS_TO_RUN...]

	e.g.:
	  $0 skqp-universal-debug.apk
	or:
	  $0 skqp-universal-debug.apk vk_hairmodes gles_gammatext gles_aarectmodes

	EOM
    exit 1
fi

ARGS=''
if [ "$#" -gt 0 ]; then
    ARGS="-e class org.skia.skqp.SkQPRunner#${1}"
    shift
    for arg; do
        ARGS="${ARGS},org.skia.skqp.SkQPRunner#${arg}"
    done
fi

TDIR="$(mktemp -d "${TMPDIR:-/tmp}/skqp_report.XXXXXXXXXX")"

adb install -r "$APK" || exit 2
adb logcat -c

adb logcat TestRunner org.skia.skqp skia DEBUG "*:S" | tee "${TDIR}/logcat.txt" &
LOGCAT_PID=$!

ADBSHELL_PID=''
trap 'kill $LOGCAT_PID; kill $ADBSHELL_PID' INT

printf '\n%s\n\n' "adb shell am instrument $ARGS -w org.skia.skqp"
adb shell am instrument $ARGS -w org.skia.skqp \
    >  "${TDIR}/stdout.txt" \
    2> "${TDIR}/stderr.txt" &
ADBSHELL_PID=$!

wait $ADBSHELL_PID
trap - INT
kill $LOGCAT_PID

printf '\nTEST OUTPUT IS IN: "%s"\n\n' "$TDIR"

SED_CMD='s/^.* org.skia.skqp: output written to "\([^"]*\)".*$/\1/p'
ODIR="$(sed -n "$SED_CMD" "${TDIR}/logcat.txt" | head -1)"

if ! adb shell "test -d '$ODIR'" ; then
    echo 'missing output :('
    exit 3
fi

odir_basename="$(basename "$ODIR")"

adb pull "${ODIR}" "${TDIR}/${odir_basename}"

REPORT="${TDIR}/${odir_basename}/report.html"

if [ -f "$REPORT" ]; then
    grep 'f(.*;' "$REPORT"
    echo "$REPORT"
    "$(dirname "$0")"/../../bin/sysopen "$REPORT"
else
    echo "$TDIR"
fi
