#!/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 expected usage of pave in fx scripts


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/pave"
)

BT_MOCKED_TOOLS=(
  "out/default/pave.sh"
  "tools/devshell/build"
  "tools/devshell/get-flash-source"
)

declare fx build pavesh

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/vars.sh"
  fx-config-read
  build="${BT_TEMP_DIR}/tools/devshell/build"
  pavesh="${BT_TEMP_DIR}/out/default/pave.sh"

  # Do not use product bundle as the flash/paving source when running
  # tests by default.
  cat > "${BT_TEMP_DIR}/tools/devshell/get-flash-source.mock_side_effects" <<EOF
  echo "flash-manifest:flash.json"
EOF
}

TEST_pave_noincr_noargs() {
  local out="${BT_TEMP_DIR}/_fx_pave_output"
  BT_EXPECT ${fx} --disable=incremental pave > "$out" 2>&1
  # build was not called
  BT_ASSERT_FILE_DOES_NOT_EXIST "${build}.mock_state"
  # pave.sh was called
  BT_ASSERT_FILE_EXISTS "${pavesh}.mock_state"
  # pave.sh was called with option "-1". `--run-once` is the default behavior
  BT_EXPECT btf::does-mock-args-contain "${pavesh}.mock_state" "-1"
}

TEST_pave_noincr_noargs_with_product_bundle() {
  local out="${BT_TEMP_DIR}/_fx_pave_output"
  cat > "${BT_TEMP_DIR}/tools/devshell/get-flash-source.mock_side_effects" <<EOF
  echo "product-bundle:acme/product_bundle_dir"
EOF
  pavesh="${BT_TEMP_DIR}/out/default/acme/pave.sh"
  btf::make_mock "${pavesh}"

  BT_EXPECT ${fx} --disable=incremental pave > "$out" 2>&1
  # build was not called
  BT_ASSERT_FILE_DOES_NOT_EXIST "${build}.mock_state"
  # pave.sh was called
  BT_ASSERT_FILE_EXISTS "${pavesh}.mock_state"
  # pave.sh was called with option "-1". `--run-once` is the default behavior
  BT_EXPECT btf::does-mock-args-contain "${pavesh}.mock_state" "-1"
}

TEST_pave_singlerun() {
  local out="${BT_TEMP_DIR}/_fx_pave_output"
  BT_EXPECT ${fx} pave --run-once > "$out" 2>&1
  # pave.sh was called with option "-1"
  BT_EXPECT btf::does-mock-args-contain "${pavesh}.mock_state" "-1"
}

TEST_pave_singlerun_shortened() {
  local out="${BT_TEMP_DIR}/_fx_pave_output"
  BT_EXPECT ${fx} pave -1 > "$out" 2>&1
  # pave.sh was called with option "-1"
  BT_EXPECT btf::does-mock-args-contain "${pavesh}.mock_state" "-1"
}

TEST_pave_keeprunning() {
  local out="${BT_TEMP_DIR}/_fx_pave_output"
  BT_EXPECT ${fx} pave --keep-running > "$out" 2>&1
  # pave.sh was called without option "-1"
  BT_EXPECT btf::does-mock-args-not-contain "${pavesh}.mock_state" "-1"
}

TEST_pave_helpoptions() {
  local out="${BT_TEMP_DIR}/_fx_pave_output"
  BT_EXPECT ${fx} pave --build --help > "$out" 2>&1
  BT_EXPECT btf::does-mock-args-contain "${pavesh}.mock_state" "--help"
}

BT_RUN_TESTS "$@"
