# 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/debug/symbolize",
      "//tools/net/device-finder:host",
      "//tools/symbol-index:symbol-index",
      "//tools/symbolizer",

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

      # For `fx lint`.
      "//zircon/tools/fidl:fidl-lint",
    ]
  }
}

# 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/vars_test",
  "tests/fx-internal/verify_default_keys_test",
  "tests/subcommands/fx_cp_test",
  "tests/subcommands/fx_emu_test",
  "tests/subcommands/fx_emu_remote_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_log_test",
  "tests/subcommands/fx_mkzedboot_test",
  "tests/subcommands/fx_regen_goldens_test",
  "tests/subcommands/fx_remote_test",
  "tests/subcommands/fx_runtest_test",
  "tests/subcommands/fx_set_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-env.sh",
        "//scripts/fx-help.awk",
        "//scripts/fx",
      ]
    },
    {
      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/lib/symbol-index.sh",
        "//tools/devshell/contrib/regen-goldens",
        "//tools/devshell/cp",
        "//tools/devshell/emu",
        "//tools/devshell/emu-remote",
        "//tools/devshell/fdt",
        "//tools/devshell/flash",
        "//tools/devshell/get-build-dir",
        "//tools/devshell/get-device-addr",
        "//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/log",
        "//tools/devshell/metrics",
        "//tools/devshell/mkzedboot",
        "//tools/devshell/pave-remote",
        "//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_blobs.json",
        "//tools/devshell/tests/subcommands/data/fx_blobstats_test/wlanif_meta.far",
        "//tools/devshell/tests/subcommands/data/fx_blobstats_test/wlanif.so",
        "//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",
        "//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",
        "//tools/devshell/vdl",
      ]
    },
    {
      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" ]
}
