| #!/bin/bash | |
| # Copyright 2018 The Fuchsia Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| ### build, copy to and run a test on target | |
| ## usage: fx run-test-component [-t|--test <test_name>] [-d|--device <device>] PKG_TARGET | |
| ## Builds the specified test package (e.g., appmgr_integration_tests), copies it to the | |
| ## target, and executes it. | |
| ## | |
| ## If using this command, please run 'fx build' again before paving your device | |
| ## because 'fx build updates' used by this script does not build images so it | |
| ## can leave paver in weird state. | |
| ## Arguments: | |
| ## -t|--test Test to run. If not specified, it will run all tests in PKG_TARGET. | |
| ## -d|--device Target device. | |
| set -e | |
| source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"/lib/vars.sh | |
| fx-config-read | |
| function usage { | |
| fx-command-help run-test-component | |
| } | |
| function main { | |
| fx-standard-switches "$@" | |
| set -- "${FX_ARGV[@]}" | |
| test="" | |
| target="" | |
| device_args=() | |
| while (($#)); do | |
| case $1 in | |
| -t|--test) | |
| shift # name | |
| if [[ -z "$1" ]]; then | |
| echo "Missing parameter: <test_name>" >&2 | |
| usage | |
| exit 1 | |
| fi | |
| test="$1" | |
| ;; | |
| -d|--device) | |
| shift # name | |
| if [[ -z "$1" ]]; then | |
| echo "Missing parameter: <device>" >&2 | |
| fx-command-help | |
| exit 1 | |
| fi | |
| device_args=("-d" "$1") | |
| ;; | |
| *) | |
| if [[ "$target" == "" ]]; then | |
| target="$1" | |
| else | |
| usage | |
| exit 1 | |
| fi | |
| ;; | |
| esac | |
| shift # value | |
| done | |
| if [[ $target == "" ]]; then | |
| usage | |
| return 1 | |
| fi | |
| if [[ -z "$(pgrep -f "amber-files/repository")" ]]; then | |
| echo "WARNING: It looks like amber-srv is not running." | |
| echo "WARNING: You probably need to start \"fx serve-updates\"" | |
| exit 1 | |
| fi | |
| echo -e "Building ${target}" | |
| # build all packages as there is no way to only build one and push it to | |
| # update repository. | |
| fx-command-run build updates | |
| echo -e "\nPush package to device" | |
| fx-command-run push-package "${device_args[@]}" "${target}" | |
| if [[ "${test}" == "" ]]; then | |
| echo -e "\nRun all tests in ${target}" | |
| fx-command-run shell "${device_args[@]}" runtests "pkgfs/packages/${target}/0/test" | |
| else | |
| url="fuchsia-pkg://fuchsia.com/${target}#meta/${test}.cmx" | |
| echo -e "\nRunning ${url}" | |
| fx-command-run shell "${device_args[@]}" run_test_component "${url}" | |
| fi | |
| } | |
| main "$@" |