blob: 3ffd338bbbe2f8df8eb8f5f630df50e7dce6fc30 [file] [log] [blame]
#!/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 and run tests on host
##
## Usage: fx run-host-tests [-z] [host test names ...] [-- [test runner flags]]
## Builds and runs the given host tests.
## With "-z" passed, only Zircon tests will be run - and
## without it only tests from Garnet and above.
## If no host test names are provided, then all available
## host tests will be run.
## Test runner flags can typically be --gtest_filter=TestSuiteName.TestName
## to restrict to a particular test or set of tests.
##
set -o errexit
set -o pipefail
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/lib/vars.sh || exit $?
fx-config-read
ARGS=()
TEST_NAMES=()
function main {
while [[ -n "$1" ]]; do
case "$1" in
-v) ARGS+=("-v");;
-z) ZIRCON=1 ;;
# break at bare double dash
# allow passing args to runtests
--) shift
break
;;
*) TEST_NAMES+=("$1");;
esac
shift
done
if [[ $ZIRCON -eq 1 ]]; then
host_test_dir="${ZIRCON_BUILD_DIR}/host_tests"
fx-command-run build-zircon "-v"
else
host_test_dir="${FUCHSIA_BUILD_DIR}/host_tests"
# If test names are supplied, rebuild the associated tests; else rebuild
# everything under the GN 'host_tests' label.
if [[ -n "$TEST_NAMES" ]]; then
build_targets=(${TEST_NAMES[@]/#/host_tests/})
else
build_targets=("./build/gn:host_tests")
fi
fx-command-run build "${build_targets[@]}"
fi
runtests_cmd=("${ZIRCON_TOOLS_DIR}/runtests" "${ARGS[@]}")
if [[ -n "$TEST_NAMES" ]]; then
# Comma-separated list of host test names to filter by.
IFS="," runtests_cmd+=("-t" "${TEST_NAMES[*]}")
fi
# remaining arguments after -- are passed to test runner
"${runtests_cmd[@]}" "${host_test_dir}" -- "$@"
}
main "$@"