# 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.

group("examples") {
  testonly = true
  deps = [
    ":tests",
    "components",
    "cowsay",
    "cpp",
    "diagnostics",
    "drivers",
    "fidl",
    "fuzzers",
    "hello_world",
    "intl",
    "rust",
    "time",
  ]
}

group("tests") {
  testonly = true
  data_deps = [
    # The hermetic tests.
    ":hermetic_tests",

    # All other tests.
    "drivers/driver_test_realm:non_hermetic_tests",
    "intl:tests",
  ]
}

if (is_fuchsia) {
  group("hermetic_tests") {
    testonly = true
    deps = [
      "components:hermetic_tests",
      "cpp:hermetic_tests",
      "diagnostics:hermetic_tests",
      "drivers:hermetic_tests",
      "fidl:hermetic_tests",
      "fuzzers:hermetic_tests",
      "hello_world:hermetic_tests",
      "rust:hermetic_tests",
      "testing:hermetic_tests",
    ]
  }
}

if (is_host) {
  group("host_tests") {
    testonly = true
    deps = [ "fidl:host_tests" ]
  }
}
