# 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.
import("//build/go/go_test.gni")
import("//scripts/sdk/gn/test/build/host_script_test.gni")

if (!is_host) {
  group("fx") {
    testonly = true
    deps = []
  }
} else {
  group("fx") {
    testonly = true
    deps = [
      "//src/developer/ffx:host",
      "//src/sys/pkg/bin/pm:host",
      "//third_party/openssh-portable/fuchsia/developer-keys:ssh_config($default_toolchain)",
      "//tools/bootserver_old:host",
      "//tools/debug/symbolize",
      "//tools/net/device-finder:host",
      "//tools/symbol-index:symbol-index",
      "//tools/symbolizer",

      # For `fx format-code`.
      "//tools/cmc",
      "//tools/fidl/fidlc:fidl-format",

      # For `fx lint`.
      "//tools/fidl/fidlc:fidl-lint",

      # For 'fx create'.
      "//tools/create",
    ]
  }
}

# Tests need to be in the default toolchain, because build_api_module only
# collects metadata (into tests.json) from the default toolchain.
group("tests") {
  testonly = true
  deps = [ ":fx_script_tests($host_toolchain)" ]
}

# This is the list of test scripts that should be run to
# test the bash fx scripts.
test_scripts = [
  "tests/fx-internal/bash_test_framework_test",
  "tests/fx-internal/devfinder_usage_test",
  "tests/fx-internal/fvm_test",
  "tests/fx-internal/fx_helpers_test",
  "tests/fx-internal/fx_test",
  "tests/fx-internal/fx_update_path_test",
  "tests/fx-internal/metrics_test",
  "tests/fx-internal/mock_test",
  "tests/fx-internal/optional-features_test",
  "tests/fx-internal/reentry_test",
  "tests/fx-internal/vars_test",
  "tests/fx-internal/verify_default_keys_test",
  "tests/subcommands/fx_cp_test",
  "tests/subcommands/fx_emu_remote_test",
  "tests/subcommands/fx_emu_test",
  "tests/subcommands/fx_fdt_test",
  "tests/subcommands/fx_flash_fuchsia_test",
  "tests/subcommands/fx_helpdoc_test",
  "tests/subcommands/fx_host_tool_test",
  "tests/subcommands/fx_klog_test",
  "tests/subcommands/fx_list_build_artifacts_test",
  "tests/subcommands/fx_list_packages_test",
  "tests/subcommands/fx_log_test",
  "tests/subcommands/fx_mkzedboot_test",
  "tests/subcommands/fx_ota_test",
  "tests/subcommands/fx_pave_test",
  "tests/subcommands/fx_regen_goldens_test",
  "tests/subcommands/fx_remote_test",
  "tests/subcommands/fx_report_bug_test",
  "tests/subcommands/fx_runtest_test",
  "tests/subcommands/fx_set_test",
  "tests/subcommands/fx_setup_go_test",
  "tests/subcommands/fx_ssh_test",
  "tests/subcommands/fx_symbolize_test",
  "tests/subcommands/fx_vendor_test",

  # tests that currently can't be included in automation.
  # use 'fx self-test' to run them manually:
  # "tests/subcommands/fx_blobstats_test",  # disabled because it depends on dart prebuilt
  # "tests/subcommands/fx_codesize_test",  # disabled because it depends on dart prebuilt
  # "tests/subcommands/fx_emu_test",   # disabled because stty call fails
  # "tests/subcommands/fx_serve_update_test",  # disabled because it depends on pm
  # "tests/subcommands/fx_test_test",  # disabled because it depends on dart prebuilt
]

# Copies the files needed for the tests to the out dir
# This stages the data and builds the metadata needed to
# have these files included in the test runtime deps.
#
# The datasets are copied to the data_path directory.
# The source_base_dir must be a prefix of the files
# being copied. The target_base dir is the destination
# directory within the data_path.
#
# There are multiple datasets, one for each unique source_base_dir.
host_script_test_data("fx_bash_tests") {
  data_path = "fx_bash_tests"
  datasets = [
    {
      source_base_dir = "//scripts"
      target_base_dir = "scripts"
      files = [
        "//scripts/fx",
        "//scripts/fx-env.sh",
        "//scripts/fx-help.awk",
        "//scripts/fx-reentry",
      ]
    },
    {
      source_base_dir = "//tools/devshell/tests"
      target_base_dir = "tools/devshell/tests"
      files = []
      foreach(f, test_scripts) {
        files += [ "//tools/devshell/$f" ]
      }
    },
    {
      source_base_dir = "//scripts/sdk/gn/bash_tests"
      target_base_dir = "tools/devshell"
      files = [ "//scripts/sdk/gn/bash_tests/script_runner.sh" ]
    },
    {
      source_base_dir = "//tools/devshell/tests/lib"
      target_base_dir = "tools/devshell/tests/lib"
      files = [
        "//tools/devshell/tests/lib/bash_test_framework.sh",
        "//tools/devshell/tests/lib/fuchsia-mock.sh",
        "//tools/devshell/tests/lib/mock.sh",
      ]
    },
    {
      source_base_dir = "//tools/devshell"
      target_base_dir = "tools/devshell"

      # Consolidated dependencies of all scripts. Extracted with:
      # find tools/devshell/tests -name "*_test" -type f | xargs cat | awk '/^[ ]*BT_FILE_DEPS=/{flag=1;next}/[ ]*\)/{flag=0}flag'  | grep "tools/devshell" | sort -u | sed 's/[ ]*"\(.*\)".*/  "\/\/\1",/'

      files = [
        "//tools/devshell/contrib/blobstats",
        "//tools/devshell/contrib/codesize",
        "//tools/devshell/contrib/format-code",
        "//tools/devshell/contrib/lib/symbol-index.sh",
        "//tools/devshell/contrib/lint",
        "//tools/devshell/contrib/regen-goldens",
        "//tools/devshell/contrib/setup-go",
        "//tools/devshell/cp",
        "//tools/devshell/emu",
        "//tools/devshell/emu-remote",
        "//tools/devshell/fdt",
        "//tools/devshell/flash",
        "//tools/devshell/flash-remote",
        "//tools/devshell/get-build-dir",
        "//tools/devshell/get-device-addr",
        "//tools/devshell/go",
        "//tools/devshell/helpdoc",
        "//tools/devshell/host-tool",
        "//tools/devshell/jq.fx",
        "//tools/devshell/klog",
        "//tools/devshell/lib/fvm.sh",
        "//tools/devshell/lib/fx-cmd-locator.sh",
        "//tools/devshell/lib/fx-flash.sh",
        "//tools/devshell/lib/fx-mkzedboot.sh",
        "//tools/devshell/lib/fx-optional-features.sh",
        "//tools/devshell/lib/fx-remote.sh",
        "//tools/devshell/lib/image_build_vars.sh",
        "//tools/devshell/lib/metrics.sh",
        "//tools/devshell/lib/platform.sh",
        "//tools/devshell/lib/style.sh",
        "//tools/devshell/lib/vars.sh",
        "//tools/devshell/lib/verify-default-keys.sh",
        "//tools/devshell/list-build-artifacts",
        "//tools/devshell/list-packages",
        "//tools/devshell/log",
        "//tools/devshell/metrics",
        "//tools/devshell/mkzedboot",
        "//tools/devshell/ota",
        "//tools/devshell/pave",
        "//tools/devshell/pave-remote",
        "//tools/devshell/report-bug",
        "//tools/devshell/run-test",
        "//tools/devshell/serve-remote",
        "//tools/devshell/serve-updates",
        "//tools/devshell/set",
        "//tools/devshell/set-device",
        "//tools/devshell/shell",
        "//tools/devshell/symbolize",
        "//tools/devshell/test",
        "//tools/devshell/tests/subcommands/data/fx_blobstats_test/blob.manifest",
        "//tools/devshell/tests/subcommands/data/fx_blobstats_test/blobs.csv",
        "//tools/devshell/tests/subcommands/data/fx_blobstats_test/blobs.json",
        "//tools/devshell/tests/subcommands/data/fx_blobstats_test/packages.csv",
        "//tools/devshell/tests/subcommands/data/fx_blobstats_test/snapshot_blobs.json",
        "//tools/devshell/tests/subcommands/data/fx_blobstats_test/snapshot_meta.far",
        "//tools/devshell/tests/subcommands/data/fx_blobstats_test/wlanif.so",
        "//tools/devshell/tests/subcommands/data/fx_blobstats_test/wlanif_blobs.json",
        "//tools/devshell/tests/subcommands/data/fx_blobstats_test/wlanif_meta.far",
        "//tools/devshell/tests/subcommands/data/fx_format_code_test/cplusplus.cc",
        "//tools/devshell/tests/subcommands/data/fx_format_code_test/gn.gn",
        "//tools/devshell/tests/subcommands/data/fx_format_code_test/gn.gni",
        "//tools/devshell/tests/subcommands/data/fx_format_code_test/python3.py",
        "//tools/devshell/tests/subcommands/data/fx_format_code_test/rust.rs",
        "//tools/devshell/tests/subcommands/data/fx_serve_update_test/testpackage.cmx",
        "//tools/devshell/tests/subcommands/data/fx_serve_update_test/testpackage.json",
        "//tools/devshell/tests/subcommands/data/fx_serve_update_test/testpackage.manifest",
        "//tools/devshell/tests/subcommands/data/fx_set_test/myboard.gni",
        "//tools/devshell/tests/subcommands/data/fx_set_test/myproduct.gni",
        "//tools/devshell/tests/subcommands/data/fx_test_test/tests_hashfile/out/default/tests.json",
        "//tools/devshell/tests/subcommands/data/fx_test_test/tests_hashfile/out/default/package-repositories.json",
        "//tools/devshell/tests/subcommands/data/fx_test_test/tests_hashfile/out/default/amber-files/repository/targets.json",
        "//tools/devshell/tests/subcommands/data/fx_test_test/tests_hashfile/out/default/obj/examples/fuzzer/fuzzing-examples_pkg/meta.far.merkle",
        "//tools/devshell/tests/subcommands/data/fx_test_test/tests_hashfile/out/default/obj/examples/hello_world/cpp/hello_world_cpp_tests/meta.far.merkle",
        "//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/vendor",
      ]
    },
    {
      source_base_dir = target_out_dir
      target_base_dir = "tools/devshell"
      files = [ "${target_out_dir}/run_fx_bash_tests_driver.sh" ]
    },
    {
      source_base_dir = "//prebuilt"
      target_base_dir = "prebuilt"
      files = [ "//prebuilt/third_party/jq/${host_platform}/bin/jq" ]
    },
  ]
  data_deps = [ ":run_fx_bash_tests_driver" ]
}

generated_file("run_fx_bash_tests_driver") {
  outputs = [ "${target_out_dir}/run_fx_bash_tests_driver.sh" ]
  contents =
      read_file("//scripts/sdk/gn/bash_tests/script_header.sh", "list lines")
  foreach(s, test_scripts) {
    contents += [ "tools/devshell/script_runner.sh $s" ]
  }
}

# This is the entrypoint for the fx script tests.
host_script_test("fx_script_tests") {
  # Script path is relative to $testroot
  test_root = "fx_bash_tests"
  test_script = "fx_bash_tests/tools/devshell/run_fx_bash_tests_driver.sh"
  data_deps = [ ":fx_bash_tests" ]
}
