#!/bin/bash
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Runs the Android scenario tests on a connected device.

set -e

# Needed because if it is set, cd may print the path it changed to.
unset CDPATH

# On Mac OS, readlink -f doesn't work, so follow_links traverses the path one
# link at a time, and then cds into the link destination and find out where it
# ends up.
#
# The function is enclosed in a subshell to avoid changing the working directory
# of the caller.
function follow_links() (
  cd -P "$(dirname -- "$1")"
  file="$PWD/$(basename -- "$1")"
  while [[ -L "$file" ]]; do
    cd -P "$(dirname -- "$file")"
    file="$(readlink -- "$file")"
    cd -P "$(dirname -- "$file")"
    file="$PWD/$(basename -- "$file")"
  done
  echo "$file"
)

SCRIPT_DIR=$(follow_links "$(dirname -- "${BASH_SOURCE[0]}")")
SRC_DIR="$(cd "$SCRIPT_DIR/../../.."; pwd -P)"
OUT_DIR="$SRC_DIR/out/$1"

cd "$SCRIPT_DIR/android"
GRADLE_USER_HOME="$PWD/android/gradle-home/.cache"
set -o pipefail && ./gradlew app:verifyDebugAndroidTestScreenshotTest \
  --gradle-user-home "$GRADLE_USER_HOME" \
  -Pflutter_jar=$OUT_DIR/flutter.jar
  -Pout_dir=$OUT_DIR/scenario_app_screenshot_test
