#!/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 behavior of fx log


BT_FILE_DEPS=(
  "scripts/fx"
  "tools/devshell/contrib/lib/symbol-index.sh"
  "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/symbolize"
  "tools/devshell/log"
)

BT_MOCKED_TOOLS=(
  "tools/devshell/wait"
  "tools/devshell/shell"
  "tools/devshell/ssh"
)

declare fx symbolize symbol_index

BT_SET_UP() {
  source "${BT_TEMP_DIR}/tools/devshell/tests/lib/fuchsia-mock.sh"
  fx="$(btf::setup_fx)"
  symbolize="$(btf::make_hosttools_mock symbolize)"
  symbol_index="$(btf::make_installed_hosttools_mock symbol-index)"
}

TEST_log_raw() {
  BT_EXPECT ${fx} log --raw
  BT_EXPECT_FILE_DOES_NOT_EXIST "${symbolize}.mock_state" \
    "symbolize should not have been called when using fx log --raw"
}

TEST_log_local() {
  BT_EXPECT ${fx} log
  source "${symbolize}.mock_state"
  local symbol_args="$(count_symbol_server_args)"
  BT_EXPECT_EQ "${symbol_args}" "0" "symbolize should not get any -symbol-server arguments: ${symbol_args}"
}

TEST_log_remote() {
  BT_EXPECT ${fx} log -r
  source "${symbolize}.mock_state"
  local symbol_args="$(count_symbol_server_args)"
  BT_EXPECT_EQ $((symbol_args>0)) "1" "symbolize should get at least one -symbol-server argument: ${symbol_args}"
}

TEST_log_remote_long() {
  BT_EXPECT ${fx} log --remote-symbols
  source "${symbolize}.mock_state"
  local symbol_args="$(count_symbol_server_args)"
  BT_EXPECT_EQ $((symbol_args>0)) "1" "symbolize should get at least one -symbol-server argument: ${symbol_args}"
}

count_symbol_server_args() {
  local symbol_server_args=0
  for i in "${!BT_MOCK_ARGS[@]}"; do
    if [[ "${BT_MOCK_ARGS[$i]}" == "-symbol-server" ]]; then
      ((symbol_server_args++))
    fi
  done
  echo ${symbol_server_args}
}

BT_RUN_TESTS "$@"
