| #!/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 optional features library |
| |
| 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" |
| ) |
| |
| declare fx valid_feature |
| |
| BT_SET_UP() { |
| source "${BT_TEMP_DIR}/tools/devshell/tests/lib/fuchsia-mock.sh" |
| fx="$(btf::setup_fx)" |
| source "${BT_TEMP_DIR}/tools/devshell/lib/fx-optional-features.sh" |
| # get the first valid feature defined in an array in fx-optional-features.sh |
| # if there are no optional features, this variable will |
| # be empty and the tests that depend on it should return SUCCESS. |
| valid_feature="${_FX_OPTIONAL_FEATURES[0]}" |
| } |
| |
| TEST_disable_feature() { |
| if [[ -z "${valid_feature}" ]]; then |
| # cannot test without a valid feature to be disabled |
| return 0 |
| fi |
| local cmd="mycmd" |
| local cmd_path="${BT_TEMP_DIR}/tools/devshell/${cmd}" |
| mkdir -p "$(dirname "${cmd_path}")" |
| # create a command that runs is_feature_enabled and returns its exit code |
| cat >"${cmd_path}" <<EOF |
| #!/bin/bash |
| source ${BT_TEMP_DIR}/tools/devshell/lib/fx-optional-features.sh || exit \$\? |
| is_feature_enabled "${valid_feature}" |
| EOF |
| chmod u+x "${cmd_path}" |
| # check that the command, when executed through fx, works as intended for |
| # an optional feature. It should return 0 (true), since the feature |
| # is not disabled explicitly, hence enabled. |
| BT_EXPECT ${fx} ${cmd} |
| |
| # Now it should return false, since the feature is explicitly disabled |
| # in the fx invocation. |
| BT_EXPECT_FAIL ${fx} --disable=${valid_feature} ${cmd} |
| } |
| |
| BT_RUN_TESTS "$@" |