| #!/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" |