blob: 3cc3db45622cd3d87904aea97785f39f3b6e1382 [file] [log] [blame]
#!/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.
#
# Tests for fpublish.
set -e
# Constants.
readonly PACKAGE_NAME=placeholder.far
# Verifies that the correct pm serve command is run by fpublish.
TEST_fpublish() {
# Run command.
BT_EXPECT "${BT_TEMP_DIR}/scripts/sdk/gn/base/bin/fpublish.sh" "${PACKAGE_NAME}"
# Verify that pm serve was run correctly.
# shellcheck disable=SC1090
source "${MOCKED_PM}.mock_state"
local PM_ARGS=("${BT_MOCK_ARGS[@]:1}")
# Expected commands to be run by fpublish.sh.
local EXPECTED_PM_PUBLISH_ARGS=(
publish
-a
-r "${FUCHSIA_WORK_DIR}/packages/amber-files"
-f "${PACKAGE_NAME}"
)
BT_EXPECT_EQ ${#EXPECTED_PM_PUBLISH_ARGS[@]} ${#PM_ARGS[@]}
for i in "${!EXPECTED_PM_PUBLISH_ARGS[@]}"; do
if [[ "$i" == "0" ]]; then
# The path to pm isn't relevant. The fact that the pm mock state is
# available is sufficient verification that pm was called.
continue
fi
BT_EXPECT_EQ "${EXPECTED_PM_PUBLISH_ARGS[$i]}" "${PM_ARGS[$i]}"
done
# Verify that pm was only run once.
BT_EXPECT_FILE_DOES_NOT_EXIST "${MOCKED_PM}.mock_state.1"
}
# Test initialization.
# shellcheck disable=SC2034
BT_FILE_DEPS=(
scripts/sdk/gn/base/bin/fpublish.sh
scripts/sdk/gn/base/bin/fuchsia-common.sh
scripts/sdk/gn/bash_tests/gn-bash-test-lib.sh
)
# shellcheck disable=SC2034
BT_MOCKED_TOOLS=(
scripts/sdk/gn/base/tools/x64/pm
scripts/sdk/gn/base/tools/arm64/pm
)
BT_SET_UP() {
# shellcheck disable=SC1090
source "${BT_TEMP_DIR}/scripts/sdk/gn/bash_tests/gn-bash-test-lib.sh"
# Make "home" directory in the test dir so the paths are stable."
mkdir -p "${BT_TEMP_DIR}/test-home"
export HOME="${BT_TEMP_DIR}/test-home"
FUCHSIA_WORK_DIR="${HOME}/.fuchsia"
MOCKED_PM="${BT_TEMP_DIR}/scripts/sdk/gn/base/$(gn-test-tools-subdir)/pm"
}
BT_RUN_TESTS "$@"