#! /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 1 ]; 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")"

filter() {
    local re='^.*org\.skia\.skqp: output written to "\([^"]*\)".*$'
    while IFS='' read -r line ; do
        if printf '%s\n' "$line" | grep -q "$re"; then
            D="$(printf '%s\n' "$line" | sed -n "s/${re}/\1/p")"
            echo "$D" > "${TDIR}/loc"
        fi
        printf '%s\n' "$line" | sed 's/^[0-9-]\+ [0-9.:]\+ [0-9]\+ [0-9]\+//'
    done
}

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

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

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

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"

if ! [ -f "${TDIR}/loc" ]; then exit 2; fi

ODIR="$(cat "${TDIR}/loc")/skqp_report"

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

adb pull "${ODIR}/out.csv" "${ODIR}/report.html" "${ODIR}/images" "${TDIR}/"
REPORT="$TDIR/report.html"
grep 'f(.*;' "$REPORT"
echo "$REPORT"
case "$(uname)" in
    Linux)
        [ "$DISPLAY" ] && xdg-open "$REPORT" &
        sleep 1
        ;;
    Darwin)
        open "$REPORT" &
        ;;
esac

