| #!/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. |
| # To run the test on a x64 emulator, build `android_debug_unopt_x64`, and then run |
| # `./run_android_tests.sh android_debug_unopt_x64`. |
| |
| set -e |
| |
| # Needed because if it is set, cd may print the path it changed to. |
| unset CDPATH |
| |
| BUILD_VARIANT=$1 |
| |
| # 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/$BUILD_VARIANT" |
| |
| # Dump the logcat and symbolize stack traces before exiting. |
| function dumpLogcat { |
| ndkstack="windows-x86_64" |
| if [ "$(uname)" == "Darwin" ]; then |
| ndkstack="darwin-x86_64" |
| elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then |
| ndkstack="linux-x86_64" |
| fi |
| |
| echo "-> Symbolize stack traces" |
| "$SRC_DIR"/third_party/android_tools/ndk/prebuilt/"$ndkstack"/bin/ndk-stack \ |
| -sym "$OUT_DIR" \ |
| -dump "$OUT_DIR"/scenario_app/logcat.txt |
| echo "<- Done" |
| |
| echo "-> Dump full logcat" |
| cat "$OUT_DIR"/scenario_app/logcat.txt |
| echo "<- Done" |
| } |
| |
| trap dumpLogcat EXIT |
| |
| cd $SCRIPT_DIR |
| |
| "$SRC_DIR"/third_party/dart/tools/sdks/dart-sdk/bin/dart pub get |
| |
| "$SRC_DIR"/third_party/dart/tools/sdks/dart-sdk/bin/dart run \ |
| "$SCRIPT_DIR"/bin/android_integration_tests.dart \ |
| --adb="$SRC_DIR"/third_party/android_tools/sdk/platform-tools/adb \ |
| --out-dir="$OUT_DIR" |