# 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("//sdk/cts/build/cts.gni")

group("cts_no_e2e") {
  testonly = true
  assert_no_deps = e2e_test_libs

  deps = [ "tests:tests_no_e2e" ]

  # Prevents us from adding example tests and build scripts to the archive.
  path = get_label_info(":${target_name}", "dir")
  is_cts_tot = string_replace(path, "//sdk/cts", "") != path
  if (is_cts_tot) {
    deps += [
      "build/scripts:tests",
      "examples:tests",
    ]
  }
}

group("cts") {
  testonly = true
  deps = [
    ":cts_no_e2e",
    "tests",
  ]

  # Prevents us from adding example tests and build scripts to the archive.
  # TODO(jcecil): add tools back once we're able to execute them OOT.
  path = get_label_info(":${target_name}", "dir")
  is_cts_tot = string_replace(path, "//sdk/cts", "") != path
  if (is_cts_tot) {
    deps += [ "tools" ]
  }
}

cts_copy_to_sdk("build") {
  sources = [ "BUILD.gn" ]
  testonly = true
}

sdk_molecule("cts_tests") {
  category = "cts"
  deps = [
    ":build_sdk",
    "tests:test_sdks",
    "//sdk/testing/fidl:test_sdks",
  ]

  # Prevents us from adding example tests to the archive.
  path = get_label_info(":${target_name}", "dir")
  is_cts_tot = string_replace(path, "//sdk/cts", "") != path
  if (is_cts_tot) {
    deps += [ "examples:test_sdks" ]
  }
  testonly = true
}
