| #!/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 Fuchsia unit tests in the debug configuration. |
| ### |
| ### Arguments: |
| ### --package-filter: Only runs tests in packages that match the given `find` statement. |
| ### --gtest-filter: In the packages, only runs tests that match the given filter. |
| ### For example: --gtest-filter "*FlatlandConnection*" to run any tests |
| ### that have the phrase FlatlandConnection in them. |
| ### --unoptimized: Disables C++ compiler optimizations. |
| ### --count: Number of times to run the test. By default runs 1 time. |
| ### See `ffx test run --count`. |
| ### --goma: Speeds up builds for Googlers. sorry. :( |
| |
| set -e # Fail on any error. |
| source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/vars.sh || exit $? |
| |
| ensure_fuchsia_dir |
| ensure_engine_dir |
| ensure_ninja |
| |
| # Parse arguments. |
| runtime_mode="debug" |
| compilation_mode="jit" |
| fuchsia_cpu="x64" |
| goma=0 |
| goma_flags="" |
| ninja_cmd="ninja" |
| package_filter="*tests-0.far" |
| test_filter_flags="" |
| unoptimized_flags="" |
| unoptimized_suffix="" |
| count_flags="" |
| while [[ $# -gt 0 ]]; do |
| case $1 in |
| --package_filter|--package-filter) |
| shift # past argument |
| package_filter="$1" |
| shift # past value |
| ;; |
| --count) |
| shift # past argument |
| count_flags="--count $1" |
| shift # past value |
| ;; |
| --goma) |
| goma=1 |
| goma_flags="--goma" |
| ninja_cmd="autoninja" |
| shift # past argument |
| ;; |
| --unopt|--unoptimized) |
| unoptimized_flags="--unoptimized" |
| unoptimized_suffix="_unopt" |
| shift # past argument |
| ;; |
| --gtest_filter|--gtest-filter) |
| shift # past argument |
| test_filter_flags="-- --gtest_filter=$1" |
| shift # past value |
| ;; |
| *) |
| engine-error "Unknown argument: $1" |
| exit 1 |
| ;; |
| esac |
| done |
| |
| all_gn_args="--fuchsia --no-lto --fuchsia-cpu="${fuchsia_cpu}" --runtime-mode="${runtime_mode}" ${goma_flags} ${unoptimized_flags}" |
| engine-info "GN args: ${all_gn_args}" |
| |
| "${ENGINE_DIR}"/flutter/tools/gn ${all_gn_args} |
| |
| fuchsia_out_dir_name=fuchsia_${runtime_mode}${unoptimized_suffix}_${fuchsia_cpu} |
| fuchsia_out_dir="${ENGINE_DIR}"/out/"${fuchsia_out_dir_name}" |
| engine-info "Building ${fuchsia_out_dir_name}..." |
| ${ninja_cmd} -C "${fuchsia_out_dir}" fuchsia_tests |
| |
| engine-info "Registering debug symbols..." |
| # .jiri_root/bin/ffx needs to run from $FUCHSIA_DIR. |
| pushd $FUCHSIA_DIR |
| "$FUCHSIA_DIR"/.jiri_root/bin/ffx debug symbol-index add "${fuchsia_out_dir}"/.build-id --build-dir "${fuchsia_out_dir}" |
| popd # $FUCHSIA_DIR |
| |
| test_packages="$(find ${fuchsia_out_dir} -name "${package_filter}")" |
| |
| engine-info "Publishing test packages..." |
| test_names=() |
| for test_package in $test_packages |
| do |
| engine-info "... publishing ${test_package} ..." |
| $ENGINE_DIR/fuchsia/sdk/linux/tools/x64/pm publish -a -r $FUCHSIA_DIR/$(cat $FUCHSIA_DIR/.fx-build-dir)/amber-files -f "${test_package}" |
| test_names+=("$(basename ${test_package} | sed -e "s/-0.far//")") |
| done |
| |
| # .jiri_root/bin/ffx needs to run from $FUCHSIA_DIR. |
| |
| pushd $FUCHSIA_DIR |
| |
| # TODO(akbiggs): Match the behavior of this script more closely with test_suites.yaml. |
| engine-info "Running tests... (if this fails because of Launch(InstanceCannotResolve), run fx serve and try again)" |
| for test_name in "${test_names[@]}" |
| do |
| # ParagraphTest.* fails in txt_tests. |
| if [[ "${test_name}" == "txt_tests" ]] |
| then |
| engine-warning "Skipping txt_tests because I don't know how to filter out ParagraphTests.*" |
| continue |
| fi |
| # ${test_filter_flags} must come last below because it includes " -- " to start program arguments. |
| test_cmd="${FUCHSIA_DIR}/.jiri_root/bin/ffx test run fuchsia-pkg://fuchsia.com/${test_name}#meta/${test_name}.cm ${count_flags} ${test_filter_flags}" |
| |
| engine-info "... $test_cmd ..." |
| $test_cmd |
| done |
| |
| popd # $FUCHSIA_DIR |