| #!/bin/bash |
| # Copyright 2020 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 expected behavior of fx run-test |
| |
| BT_FILE_DEPS=( |
| "scripts/fx" |
| "tools/devshell/lib/fx-cmd-locator.sh" |
| "tools/devshell/lib/fx-optional-features.sh" |
| "tools/devshell/lib/vars.sh" |
| "tools/devshell/lib/platform.sh" |
| "tools/devshell/run-test" |
| ) |
| |
| BT_MOCKED_TOOLS=( |
| "tools/devshell/lib/updates.sh" |
| "tools/devshell/build" |
| "tools/devshell/wait" |
| "tools/devshell/push-package" |
| "tools/devshell/test" |
| "tools/devshell/shell" |
| "tools/devshell/symbolize" |
| "tools/devshell/update-if-in-base" |
| "tools/devshell/is-package-server-running" |
| ) |
| |
| declare fx DATA_DIR |
| |
| BT_SET_UP() { |
| source "${BT_TEMP_DIR}/tools/devshell/tests/lib/fuchsia-mock.sh" |
| fx="$(btf::setup_fx)" |
| mkdir -p "${BT_TEMP_DIR}/tools/devshell/lib" |
| cat > "${BT_TEMP_DIR}/tools/devshell/lib/updates.sh.mock_side_effects" <<EOF |
| function check-for-amber-server { |
| return 0 |
| } |
| EOF |
| } |
| |
| # Test if "fx run-test" runs fx update-if-in-base when the package is in base |
| TEST_in_base() { |
| local test_name="example_component" |
| local component1_url="fuchsia-pkg://fuchsia.com/example_package#meta/example_component_1.cmx", |
| cat > "${BT_TEMP_DIR}/tools/devshell/test.mock_stdout" <<EOF |
| command: fx shell run-test-component ${component1_url} |
| cpu: arm64 |
| label: //src/connectivity/telephony/example:example_package(//build/toolchain/fuchsia:arm64) |
| name: ${test_name} |
| os: fuchsia |
| package_url: ${component1_url} |
| path: /pkgfs/packages/${test_name}/0/test/${test_name} |
| EOF |
| echo "${test_name}" > "${BT_TEMP_DIR}/out/default/base_packages.list" |
| local out="${BT_TEMP_DIR}/output.log" |
| ${fx} run-test ${test_name} >${out} 2>&1 |
| # check that "fx update-if-in-base" was called |
| btf::expect-mock-args "${BT_TEMP_DIR}/tools/devshell/update-if-in-base" "${test_name}" |
| } |
| |
| # Test if "fx run-test" executes "fx shell runtests" properly when |
| # the name passed results in multiple test packages. |
| TEST_multiple_tests() { |
| local component1_url="fuchsia-pkg://fuchsia.com/example_package#meta/example_component_1.cmx" |
| local component2_url="fuchsia-pkg://fuchsia.com/example_package#meta/example_component_2.cmx" |
| cat > "${BT_TEMP_DIR}/tools/devshell/test.mock_stdout" <<EOF |
| command: fx shell run-test-component ${component1_url} |
| cpu: arm64 |
| label: //src/connectivity/telephony/example:example_package(//build/toolchain/fuchsia:arm64) |
| name: example_package_test |
| os: fuchsia |
| package_url: ${component1_url} |
| path: /pkgfs/packages/example_package_test/0/test/example_package_test |
| |
| command: fx shell run-test-component ${component2_url} |
| cpu: arm64 |
| label: //src/connectivity/telephony/example:example_package(//build/toolchain/fuchsia:arm64) |
| name: example_package_test |
| os: fuchsia |
| package_url: ${component2_url} |
| path: /pkgfs/packages/example_package_test/0/test/example_package_test |
| EOF |
| local out="${BT_TEMP_DIR}/output.log" |
| ${fx} run-test example_package >${out} 2>&1 |
| # check if "fx shell" was executed properly for runtests syntax |
| btf::expect-mock-args "${BT_TEMP_DIR}/tools/devshell/shell" \ |
| "runtests" "${component1_url}" "${component2_url}" |
| } |
| |
| BT_RUN_TESTS "$@" |
| |