| #!/bin/bash |
| # Copyright 2019 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. |
| |
| ### Test the helper functions defined in //tools/devshell/README.md#helper-functions |
| |
| source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/../../lib/vars.sh || exit $? |
| |
| BT_FILE_DEPS=( |
| "prebuilt/third_party/jq/${HOST_PLATFORM}/bin/jq" |
| "tools/devshell/jq.fx" |
| "tools/devshell/lib/fx-cmd-locator.sh" |
| "tools/devshell/lib/fx-optional-features.sh" |
| "tools/devshell/lib/generate-ssh-config.sh" |
| "tools/devshell/lib/vars.sh" |
| "tools/devshell/lib/platform.sh" |
| ) |
| |
| unset -f fx-gen |
| |
| # Replace fx-gen with a stub. |
| fx-gen() { |
| return 0 |
| } |
| |
| TEST_clean_local_environment() { |
| # This variable should be empty. |
| BT_EXPECT_EMPTY "${devshell_lib_dir}" |
| } |
| |
| TEST_fx-config-read() { |
| BT_ASSERT_FUNCTION_EXISTS fx-config-read |
| BT_ASSERT_FUNCTION_EXISTS fx-change-build-dir |
| |
| local -r BUILD_DIR_REL="out/x64test" |
| local -r HOST_OUT_REL="host_x64" |
| |
| local -r EXPECT_BUILD_DIR="${FUCHSIA_DIR}/${BUILD_DIR_REL}" |
| local -r EXPECT_HOST_OUT="${EXPECT_BUILD_DIR}/${HOST_OUT_REL}" |
| |
| # fx-build-config-load expects a {build}/fx.config |
| mkdir -p "${EXPECT_BUILD_DIR}" |
| { |
| echo "FUCHSIA_BUILD_DIR='${EXPECT_BUILD_DIR}'" |
| echo "HOST_OUT_DIR='${HOST_OUT_REL}'" |
| } > "${EXPECT_BUILD_DIR}/fx.config" |
| |
| |
| BT_EXPECT "( fx-change-build-dir "${BUILD_DIR_REL}" )" |
| |
| unset FUCHSIA_BUILD_DIR |
| unset HOST_OUT_DIR |
| |
| fx-config-read |
| |
| BT_EXPECT_EQ "${FUCHSIA_BUILD_DIR}" "${EXPECT_BUILD_DIR}" |
| BT_EXPECT_EQ "${HOST_OUT_DIR}" "${EXPECT_HOST_OUT}" |
| } |
| |
| TEST_fx-info() { |
| BT_ASSERT_FUNCTION_EXISTS fx-info |
| |
| # Capture stderr. |
| local result |
| result=$( fx-info some info 2>&1 ) |
| BT_EXPECT_STRING_CONTAINS_SUBSTRING "${result}" "some info" |
| } |
| |
| |
| TEST_fx-warn() { |
| BT_ASSERT_FUNCTION_EXISTS fx-warn |
| |
| # Capture stderr. |
| local result |
| result=$( fx-warn some warning 2>&1 ) |
| BT_EXPECT_STRING_CONTAINS_SUBSTRING "${result}" "some warning" |
| } |
| |
| TEST_fx-error() { |
| BT_ASSERT_FUNCTION_EXISTS fx-error |
| |
| # Capture stderr. |
| local result |
| result=$( fx-error some error 2>&1 ) |
| BT_EXPECT_STRING_CONTAINS_SUBSTRING "${result}" "some error" |
| } |
| |
| TEST_get-device-pair() { |
| local -r BUILD_DIR_REL="out/x64test" |
| local -r HOST_OUT_REL="host_x64" |
| |
| local -r EXPECT_BUILD_DIR="${FUCHSIA_DIR}/${BUILD_DIR_REL}" |
| local -r EXPECT_HOST_OUT="${EXPECT_BUILD_DIR}/${HOST_OUT_REL}" |
| |
| # fx-build-config-load expects a {build}/fx.config |
| mkdir -p "${EXPECT_BUILD_DIR}" |
| { |
| echo "FUCHSIA_BUILD_DIR='${EXPECT_BUILD_DIR}'" |
| echo "HOST_OUT_DIR='${HOST_OUT_REL}'" |
| } > "${EXPECT_BUILD_DIR}/fx.config" |
| |
| BT_EXPECT "( fx-change-build-dir "${BUILD_DIR_REL}" )" |
| |
| BT_EXPECT fx-config-read |
| |
| # correct when only a device-pair file |
| echo "foo" > "${EXPECT_BUILD_DIR}.device" |
| BT_EXPECT_EQ "foo" $(get-device-pair) |
| # correct when device-pair and ffx config agree |
| echo '{"target":{"default":"foo"}}' > "${EXPECT_BUILD_DIR}.json" |
| BT_EXPECT_EQ "foo" $(get-device-pair) |
| # correct when device-pair and ffx config disagree (prefer ffx) |
| echo '{"target":{"default":"bar"}}' > "${EXPECT_BUILD_DIR}.json" |
| BT_EXPECT_EQ "bar" $(get-device-pair) |
| # correct when only ffx config |
| rm "${EXPECT_BUILD_DIR}.device" |
| BT_EXPECT_EQ "bar" $(get-device-pair) |
| # errors when neither |
| rm "${EXPECT_BUILD_DIR}.json" |
| BT_EXPECT_FAIL get-device-pair |
| } |
| |
| TEST_is-remote-workflow-device() { |
| BT_ASSERT_FUNCTION_EXISTS is-remote-workflow-device |
| |
| local -r BUILD_DIR_REL="out/x64test" |
| local -r HOST_OUT_REL="host_x64" |
| |
| local -r EXPECT_BUILD_DIR="${FUCHSIA_DIR}/${BUILD_DIR_REL}" |
| local -r EXPECT_HOST_OUT="${EXPECT_BUILD_DIR}/${HOST_OUT_REL}" |
| |
| # fx-build-config-load expects a {build}/fx.config |
| mkdir -p "${EXPECT_BUILD_DIR}" |
| { |
| echo "FUCHSIA_BUILD_DIR='${EXPECT_BUILD_DIR}'" |
| echo "HOST_OUT_DIR='${HOST_OUT_REL}'" |
| } > "${EXPECT_BUILD_DIR}/fx.config" |
| |
| BT_EXPECT "( fx-change-build-dir "${BUILD_DIR_REL}" )" |
| |
| BT_EXPECT fx-config-read |
| |
| echo "foo" > "${EXPECT_BUILD_DIR}.device" |
| BT_EXPECT_EQ "foo" $(get-device-pair) |
| BT_EXPECT_FAIL is-remote-workflow-device |
| |
| echo "${_FX_REMOTE_WORKFLOW_DEVICE_ADDR}" > "${EXPECT_BUILD_DIR}.device" |
| BT_EXPECT_EQ "${_FX_REMOTE_WORKFLOW_DEVICE_ADDR}" $(get-device-pair) |
| BT_EXPECT is-remote-workflow-device |
| } |
| |
| BT_RUN_TESTS "$@" |