#!/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 test

BT_LINKED_DEPS=(
  "third_party"
  "prebuilt/third_party/dart"
  "scripts/fxtest"
)

BT_FILE_DEPS=(
  "scripts/fx"
  "tools/devshell/tests/subcommands/data/fx_test_test/tests_hashfile"
  "tools/devshell/tests/subcommands/data/fx_test_test/tests_multiple_in_package.json"
  "tools/devshell/tests/subcommands/data/fx_test_test/tests_package_server_integration.json"
  "tools/devshell/lib/fx-cmd-locator.sh"
  "tools/devshell/lib/vars.sh"
  "tools/devshell/lib/prebuilt.sh"
  "tools/devshell/test"
)

BT_MOCKED_TOOLS=(
  "tools/devshell/build"
  "tools/devshell/is-package-server-running"
  "tools/devshell/update-if-in-base"
  "tools/devshell/shell"
  "tools/devshell/symbolize"
)

declare fx DATA_DIR

BT_SET_UP() {
  source "${BT_TEMP_DIR}/tools/devshell/tests/lib/fuchsia-mock.sh"
  fx="$(btf::setup_fx)"
  DATA_DIR="${BT_TEMP_DIR}/tools/devshell/tests/subcommands/data/fx_test_test"
}

# Test that the "fx test --info" outputs in the format expected by other
# commands, eg `fx run-test`
TEST_fxtest_info() {
  cp "${DATA_DIR}/tests_multiple_in_package.json" "${BT_TEMP_DIR}/out/default/tests.json"
  local out="${BT_TEMP_DIR}/_fx_test_output"
  BT_EXPECT ${fx} test --info --exact > "${out}"
  BT_EXPECT_EQ "$(sed -n 's/^package_url: \(.*\)/\1/p' "${out}" | wc -l)" 7
}

# Test that `fx test` calls `fx update-if-in-base` and `fx is-package-server-running` properly
TEST_fxtest_package_server_integration() {
  cp "${DATA_DIR}/tests_package_server_integration.json" "${BT_TEMP_DIR}/out/default/tests.json"
  local out="${BT_TEMP_DIR}/_fx_test_output"
  local testname="overflow_fuzzer_test"
  BT_EXPECT ${fx} test ${testname} > ${out}
  # ensure that is-package-server-running was called
  BT_ASSERT_FILE_EXISTS "${BT_TEMP_DIR}/tools/devshell/is-package-server-running.mock_state"
  # ensure that update-if-in-base was called with the proper testname
  btf::expect-mock-args "${BT_TEMP_DIR}/tools/devshell/update-if-in-base" "${testname}"
}

# Ensure that `fx build` is called by default
TEST_fxtest_build() {
  cp "${DATA_DIR}/tests_package_server_integration.json" "${BT_TEMP_DIR}/out/default/tests.json"
  local out="${BT_TEMP_DIR}/_fx_test_output"
  local testname="overflow_fuzzer_test"
  BT_EXPECT ${fx} test ${testname} > ${out}
  # ensure that fx build was called
  # TODO: once fx test calls fx build with a specific target, check it here as well
  BT_ASSERT_FILE_EXISTS "${BT_TEMP_DIR}/tools/devshell/build.mock_state"
}

# Ensure that `fx build` is not called when "--no-build" option is given
TEST_fxtest_nobuild() {
  cp "${DATA_DIR}/tests_package_server_integration.json" "${BT_TEMP_DIR}/out/default/tests.json"
  local out="${BT_TEMP_DIR}/_fx_test_output"
  local testname="overflow_fuzzer_test"
  BT_EXPECT ${fx} test --no-build ${testname} > ${out}
  # ensure that fx build was called
  # TODO: once fx test calls fx build with a specific target, check it here as well
  BT_ASSERT_FILE_DOES_NOT_EXIST "${BT_TEMP_DIR}/tools/devshell/build.mock_state"
}

# Test that "fx test" runs a component test pinning it to the hash (merkleroot) of
# the component package, so that the user has confidence that if a test runs, it is
# running the exact same version that has been built
TEST_fxtest_hashpinnning() {
  cp -R "${DATA_DIR}/tests_hashfile/out" "${BT_TEMP_DIR}"
  local out="${BT_TEMP_DIR}/_fx_test_output"
  local testname1="overflow_fuzzer_test"
  local hash1="913cdd63ab4aa794694448450505efaa2a8fe27fb33888e5156da9db60ac0a29"
  local testname2="hello_world_cpp_unittests"
  local hash2="7a604498e05fa012391b6b51da9cc74ff6a6a9d25b1376de98125c194232bfa1"

  # expect that "fx shell run-test-component URL-WITH-HASH" was executed
  BT_EXPECT ${fx} test --no-build ${testname1} >> "${out}"
  local packageUrl1="fuchsia-pkg://fuchsia.com/example-fuzzers?hash=${hash1}#meta/overflow_fuzzer_test.cmx"
  btf::expect-mock-args "${BT_TEMP_DIR}/tools/devshell/shell" "run-test-component" "${packageUrl1}"

  # expect that "fx shell run-test-component URL-WITH-HASH" was executed
  BT_EXPECT ${fx} test --no-build ${testname2} >> "${out}"
  local packageUrl2="fuchsia-pkg://fuchsia.com/hello_world_cpp_tests?hash=${hash2}#meta/hello_world_cpp_unittests.cmx"
  btf::expect-mock-args "${BT_TEMP_DIR}/tools/devshell/shell.mock_state.2" "run-test-component" "${packageUrl2}"
}

# Test that "fx test" doesn't fail if a component test doesn't have a hashfile
# property
TEST_fxtest_no_hashfile() {
  mkdir -p "${BT_TEMP_DIR}/out/default"
  cat > "${BT_TEMP_DIR}/out/default/tests.json" <<EOF
  [{"environments": [],
    "test": {
      "cpu": "arm64",
      "label": "//examples/fuzzer:fuzzing-examples_pkg(//build/toolchain/fuchsia:arm64)",
      "name": "overflow_fuzzer_test",
      "os": "fuchsia",
      "package_url": "fuchsia-pkg://fuchsia.com/example-fuzzers#meta/overflow_fuzzer_test.cmx",
      "path": ""
    }
  }]
EOF
  local out="${BT_TEMP_DIR}/_fx_test_output"

  # expect that "fx shell run-test-component URL-WITHOUT-HASH" is executed
  BT_EXPECT ${fx} test --no-build overflow_fuzzer_test >> "${out}"
  btf::expect-mock-args "${BT_TEMP_DIR}/tools/devshell/shell" \
    "run-test-component" "fuchsia-pkg://fuchsia.com/example-fuzzers#meta/overflow_fuzzer_test.cmx"
}


BT_RUN_TESTS "$@"