#!/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="$OUT_DIR/.gradle"
set -o pipefail && ../../../../third_party/bin/gradle app:verifyDebugAndroidTestScreenshotTest \
  --gradle-user-home "$GRADLE_USER_HOME" \
  -Pflutter_jar=$OUT_DIR/flutter.jar
  -Pout_dir=$OUT_DIR/scenario_app_screenshot_test
